提交 4ee4266e 编写于 作者: haoranc's avatar haoranc

test:modify testcase of muti-mnode

上级 1b2a4923
...@@ -334,22 +334,22 @@ class TDDnode: ...@@ -334,22 +334,22 @@ class TDDnode:
bkey2 = bytes(key2, encoding="utf8") bkey2 = bytes(key2, encoding="utf8")
logFile = self.logDir + "/taosdlog.0" logFile = self.logDir + "/taosdlog.0"
i = 0 i = 0
while not os.path.exists(logFile): # while not os.path.exists(logFile):
sleep(0.1) # sleep(0.1)
i += 1 # i += 1
if i > 10: # if i > 10:
break # break
tailCmdStr = 'tail -f ' # tailCmdStr = 'tail -f '
if platform.system().lower() == 'windows': # if platform.system().lower() == 'windows':
tailCmdStr = 'tail -n +0 -f ' # tailCmdStr = 'tail -n +0 -f '
popen = subprocess.Popen( # popen = subprocess.Popen(
tailCmdStr + logFile, # tailCmdStr + logFile,
stdout=subprocess.PIPE, # stdout=subprocess.PIPE,
stderr=subprocess.PIPE, # stderr=subprocess.PIPE,
shell=True) # 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
# while True: # while True:
# line = popen.stdout.readline().strip() # line = popen.stdout.readline().strip()
# print(line) # print(line)
......
...@@ -156,6 +156,7 @@ class TDSql: ...@@ -156,6 +156,7 @@ class TDSql:
def checkRows(self, expectRows): def checkRows(self, expectRows):
if self.queryRows == expectRows: if self.queryRows == expectRows:
tdLog.info("sql:%s, queryRows:%d == expect:%d" % (self.sql, self.queryRows, expectRows)) tdLog.info("sql:%s, queryRows:%d == expect:%d" % (self.sql, self.queryRows, expectRows))
return True
else: else:
caller = inspect.getframeinfo(inspect.stack()[1][0]) caller = inspect.getframeinfo(inspect.stack()[1][0])
args = (caller.filename, caller.lineno, self.sql, self.queryRows, expectRows) args = (caller.filename, caller.lineno, self.sql, self.queryRows, expectRows)
......
...@@ -54,7 +54,9 @@ class TDTestCase: ...@@ -54,7 +54,9 @@ class TDTestCase:
valgrind = 0 valgrind = 0
hostname = socket.gethostname() hostname = socket.gethostname()
dnodes = [] dnodes = []
start_port = 6030 start_port = 6030
start_port_sec = 6130
for num in range(1, dnodes_nums+1): for num in range(1, dnodes_nums+1):
dnode = TDDnode(num) dnode = TDDnode(num)
dnode.addExtraCfg("firstEp", f"{hostname}:{start_port}") dnode.addExtraCfg("firstEp", f"{hostname}:{start_port}")
...@@ -62,6 +64,8 @@ class TDTestCase: ...@@ -62,6 +64,8 @@ class TDTestCase:
dnode.addExtraCfg("serverPort", f"{start_port + (num-1)*100}") dnode.addExtraCfg("serverPort", f"{start_port + (num-1)*100}")
dnode.addExtraCfg("monitorFqdn", hostname) dnode.addExtraCfg("monitorFqdn", hostname)
dnode.addExtraCfg("monitorPort", 7043) dnode.addExtraCfg("monitorPort", 7043)
dnode.addExtraCfg("secondEp", f"{hostname}:{start_port_sec}")
dnodes.append(dnode) dnodes.append(dnode)
self.TDDnodes = MyDnodes(dnodes) self.TDDnodes = MyDnodes(dnodes)
......
...@@ -78,6 +78,7 @@ class TDTestCase: ...@@ -78,6 +78,7 @@ class TDTestCase:
print(hostname) print(hostname)
dnodes = [] dnodes = []
start_port = 6030 start_port = 6030
start_port_sec = 6130
for num in range(1, dnodes_nums+1): for num in range(1, dnodes_nums+1):
dnode = TDDnode(num) dnode = TDDnode(num)
dnode.addExtraCfg("firstEp", f"{hostname}:{start_port}") dnode.addExtraCfg("firstEp", f"{hostname}:{start_port}")
...@@ -85,6 +86,7 @@ class TDTestCase: ...@@ -85,6 +86,7 @@ class TDTestCase:
dnode.addExtraCfg("serverPort", f"{start_port + (num-1)*100}") dnode.addExtraCfg("serverPort", f"{start_port + (num-1)*100}")
dnode.addExtraCfg("monitorFqdn", hostname) dnode.addExtraCfg("monitorFqdn", hostname)
dnode.addExtraCfg("monitorPort", 7043) dnode.addExtraCfg("monitorPort", 7043)
dnode.addExtraCfg("secondEp", f"{hostname}:{start_port_sec}")
dnodes.append(dnode) dnodes.append(dnode)
self.TDDnodes = MyDnodes(dnodes) self.TDDnodes = MyDnodes(dnodes)
...@@ -116,25 +118,28 @@ class TDTestCase: ...@@ -116,25 +118,28 @@ class TDTestCase:
while count < 10: while count < 10:
time.sleep(1) time.sleep(1)
tdSql.query("show mnodes;") tdSql.query("show mnodes;")
if tdSql.checkRows(3) : if tdSql.checkRows(3) :
if tdSql.queryResult[0][2]=='leader' : print("mnode is three nodes")
if tdSql.queryResult[1][2]=='follower': if tdSql.queryResult[0][2]=='leader' :
if tdSql.queryResult[2][2]=='follower': if tdSql.queryResult[1][2]=='follower':
print("three mnodes is ready in 10s") if tdSql.queryResult[2][2]=='follower':
break print("three mnodes is ready in 10s")
elif tdSql.queryResult[0][2]=='follower' : break
if tdSql.queryResult[1][2]=='leader': elif tdSql.queryResult[0][2]=='follower' :
if tdSql.queryResult[2][2]=='follower': if tdSql.queryResult[1][2]=='leader':
print("three mnodes is ready in 10s") if tdSql.queryResult[2][2]=='follower':
break print("three mnodes is ready in 10s")
elif tdSql.queryResult[0][2]=='follower' : break
if tdSql.queryResult[1][2]=='follower': elif tdSql.queryResult[0][2]=='follower' :
if tdSql.queryResult[2][2]=='leader': if tdSql.queryResult[1][2]=='follower':
print("three mnodes is ready in 10s") if tdSql.queryResult[2][2]=='leader':
break print("three mnodes is ready in 10s")
break
count+=1 count+=1
else: else:
print(tdSql.queryResult)
print("three mnodes is not ready in 10s ") print("three mnodes is not ready in 10s ")
return -1
tdSql.query("show mnodes;") tdSql.query("show mnodes;")
tdSql.checkRows(3) tdSql.checkRows(3)
...@@ -151,18 +156,21 @@ class TDTestCase: ...@@ -151,18 +156,21 @@ class TDTestCase:
time.sleep(1) time.sleep(1)
tdSql.query("show mnodes;") tdSql.query("show mnodes;")
if tdSql.checkRows(3) : if tdSql.checkRows(3) :
if tdSql.queryResult[0][2]=='offline' : print("mnode is three nodes")
if tdSql.queryResult[1][2]=='leader': if tdSql.queryResult[0][2]=='offline' :
if tdSql.queryResult[2][2]=='follower': if tdSql.queryResult[1][2]=='leader':
print("stop mnodes on dnode 2 successfully in 10s") if tdSql.queryResult[2][2]=='follower':
break print("stop mnodes on dnode 2 successfully in 10s")
elif tdSql.queryResult[1][2]=='follower': break
if tdSql.queryResult[2][2]=='leader': elif tdSql.queryResult[1][2]=='follower':
print("stop mnodes on dnode 2 successfully in 10s") if tdSql.queryResult[2][2]=='leader':
break print("stop mnodes on dnode 2 successfully in 10s")
break
count+=1 count+=1
else: else:
print("stop mnodes on dnode 2 failed in 10s ") print("stop mnodes on dnode 2 failed in 10s ")
return -1
tdSql.error("drop mnode on dnode 1;")
tdSql.query("show mnodes;") tdSql.query("show mnodes;")
tdSql.checkRows(3) tdSql.checkRows(3)
...@@ -174,20 +182,23 @@ class TDTestCase: ...@@ -174,20 +182,23 @@ class TDTestCase:
tdSql.checkData(2,1,'%s:6230'%self.host) tdSql.checkData(2,1,'%s:6230'%self.host)
tdSql.checkData(2,3,'ready') tdSql.checkData(2,3,'ready')
def check3mnode2drop(self): def check3mnode2off(self):
count=0 count=0
while count < 10: while count < 40:
time.sleep(1) time.sleep(1)
tdSql.query("show mnodes;") tdSql.query("show mnodes;")
if tdSql.checkRows(3) : if tdSql.checkRows(3) :
if tdSql.queryResult[0][2]=='leader' : print("mnode is three nodes")
if tdSql.queryResult[1][2]=='offline': if tdSql.queryResult[0][2]=='leader' :
if tdSql.queryResult[2][2]=='follower': if tdSql.queryResult[1][2]=='offline':
print("stop mnodes on dnode 2 successfully in 10s") if tdSql.queryResult[2][2]=='follower':
break print("stop mnodes on dnode 2 successfully in 10s")
break
count+=1 count+=1
else: else:
print("stop mnodes on dnode 2 failed in 10s ") print("stop mnodes on dnode 2 failed in 10s ")
return -1
tdSql.error("drop mnode on dnode 2;")
tdSql.query("show mnodes;") tdSql.query("show mnodes;")
tdSql.checkRows(3) tdSql.checkRows(3)
...@@ -197,7 +208,7 @@ class TDTestCase: ...@@ -197,7 +208,7 @@ class TDTestCase:
tdSql.checkData(1,1,'%s:6130'%self.host) tdSql.checkData(1,1,'%s:6130'%self.host)
tdSql.checkData(1,2,'offline') tdSql.checkData(1,2,'offline')
tdSql.checkData(1,3,'ready') tdSql.checkData(1,3,'ready')
tdSql.checkData(2,1,'%s:6230') tdSql.checkData(2,1,'%s:6230'%self.host)
tdSql.checkData(2,2,'follower') tdSql.checkData(2,2,'follower')
tdSql.checkData(2,3,'ready') tdSql.checkData(2,3,'ready')
...@@ -207,15 +218,17 @@ class TDTestCase: ...@@ -207,15 +218,17 @@ class TDTestCase:
time.sleep(1) time.sleep(1)
tdSql.query("show mnodes;") tdSql.query("show mnodes;")
if tdSql.checkRows(3) : if tdSql.checkRows(3) :
if tdSql.queryResult[0][2]=='leader' : print("mnode is three nodes")
if tdSql.queryResult[2][2]=='offline': if tdSql.queryResult[0][2]=='leader' :
if tdSql.queryResult[1][2]=='follower': if tdSql.queryResult[2][2]=='offline':
print("stop mnodes on dnode 3 successfully in 10s") if tdSql.queryResult[1][2]=='follower':
break print("stop mnodes on dnode 3 successfully in 10s")
break
count+=1 count+=1
else: else:
print("stop mnodes on dnode 3 failed in 10s") print("stop mnodes on dnode 3 failed in 10s")
return -1
tdSql.error("drop mnode on dnode 3;")
tdSql.query("show mnodes;") tdSql.query("show mnodes;")
tdSql.checkRows(3) tdSql.checkRows(3)
tdSql.checkData(0,1,'%s:6030'%self.host) tdSql.checkData(0,1,'%s:6030'%self.host)
......
...@@ -115,25 +115,27 @@ class TDTestCase: ...@@ -115,25 +115,27 @@ class TDTestCase:
while count < 10: while count < 10:
time.sleep(1) time.sleep(1)
tdSql.query("show mnodes;") tdSql.query("show mnodes;")
if tdSql.checkRows(3) : if tdSql.checkRows(3) :
if tdSql.queryResult[0][2]=='leader' : print("mnode is three nodes")
if tdSql.queryResult[1][2]=='follower': if tdSql.queryResult[0][2]=='leader' :
if tdSql.queryResult[2][2]=='follower': if tdSql.queryResult[1][2]=='follower':
print("three mnodes is ready in 10s") if tdSql.queryResult[2][2]=='follower':
break print("three mnodes is ready in 10s")
elif tdSql.queryResult[0][2]=='follower' : break
if tdSql.queryResult[1][2]=='leader': elif tdSql.queryResult[0][2]=='follower' :
if tdSql.queryResult[2][2]=='follower': if tdSql.queryResult[1][2]=='leader':
print("three mnodes is ready in 10s") if tdSql.queryResult[2][2]=='follower':
break print("three mnodes is ready in 10s")
elif tdSql.queryResult[0][2]=='follower' : break
if tdSql.queryResult[1][2]=='follower': elif tdSql.queryResult[0][2]=='follower' :
if tdSql.queryResult[2][2]=='leader': if tdSql.queryResult[1][2]=='follower':
print("three mnodes is ready in 10s") if tdSql.queryResult[2][2]=='leader':
break print("three mnodes is ready in 10s")
break
count+=1 count+=1
else: else:
print("three mnodes is not ready in 10s ") print("three mnodes is not ready in 10s ")
return -1
tdSql.query("show mnodes;") tdSql.query("show mnodes;")
tdSql.checkRows(3) tdSql.checkRows(3)
...@@ -145,24 +147,26 @@ class TDTestCase: ...@@ -145,24 +147,26 @@ class TDTestCase:
tdSql.checkData(2,3,'ready') tdSql.checkData(2,3,'ready')
def check3mnode1off(self): def check3mnode1off(self):
tdSql.error("drop mnode on dnode 1;")
count=0 count=0
while count < 10: while count < 10:
time.sleep(1) time.sleep(1)
tdSql.query("show mnodes;") tdSql.query("show mnodes;")
if tdSql.checkRows(3) : if tdSql.checkRows(3) :
if tdSql.queryResult[0][2]=='offline' : print("mnode is three nodes")
if tdSql.queryResult[1][2]=='leader': if tdSql.queryResult[0][2]=='offline' :
if tdSql.queryResult[2][2]=='follower': if tdSql.queryResult[1][2]=='leader':
print("stop mnodes on dnode 2 successfully in 10s") if tdSql.queryResult[2][2]=='follower':
break print("stop mnodes on dnode 2 successfully in 10s")
elif tdSql.queryResult[1][2]=='follower': break
if tdSql.queryResult[2][2]=='leader': elif tdSql.queryResult[1][2]=='follower':
print("stop mnodes on dnode 2 successfully in 10s") if tdSql.queryResult[2][2]=='leader':
break print("stop mnodes on dnode 2 successfully in 10s")
break
count+=1 count+=1
else: else:
print("stop mnodes on dnode 2 failed in 10s ") print("stop mnodes on dnode 2 failed in 10s ")
return -1
tdSql.error("drop mnode on dnode 1;")
tdSql.query("show mnodes;") tdSql.query("show mnodes;")
tdSql.checkRows(3) tdSql.checkRows(3)
...@@ -175,20 +179,22 @@ class TDTestCase: ...@@ -175,20 +179,22 @@ class TDTestCase:
tdSql.checkData(2,3,'ready') tdSql.checkData(2,3,'ready')
def check3mnode2off(self): def check3mnode2off(self):
tdSql.error("drop mnode on dnode 2;")
count=0 count=0
while count < 10: while count < 40:
time.sleep(1) time.sleep(1)
tdSql.query("show mnodes;") tdSql.query("show mnodes;")
if tdSql.checkRows(3) : if tdSql.checkRows(3) :
if tdSql.queryResult[0][2]=='leader' : print("mnode is three nodes")
if tdSql.queryResult[1][2]=='offline': if tdSql.queryResult[0][2]=='leader' :
if tdSql.queryResult[2][2]=='follower': if tdSql.queryResult[1][2]=='offline':
print("stop mnodes on dnode 2 successfully in 10s") if tdSql.queryResult[2][2]=='follower':
break print("stop mnodes on dnode 2 successfully in 10s")
break
count+=1 count+=1
else: else:
print("stop mnodes on dnode 2 failed in 10s ") print("stop mnodes on dnode 2 failed in 10s ")
return -1
tdSql.error("drop mnode on dnode 2;")
tdSql.query("show mnodes;") tdSql.query("show mnodes;")
tdSql.checkRows(3) tdSql.checkRows(3)
...@@ -203,21 +209,22 @@ class TDTestCase: ...@@ -203,21 +209,22 @@ class TDTestCase:
tdSql.checkData(2,3,'ready') tdSql.checkData(2,3,'ready')
def check3mnode3off(self): def check3mnode3off(self):
tdSql.error("drop mnode on dnode 3;")
count=0 count=0
while count < 10: while count < 10:
time.sleep(1) time.sleep(1)
tdSql.query("show mnodes;") tdSql.query("show mnodes;")
if tdSql.checkRows(3) : if tdSql.checkRows(3) :
if tdSql.queryResult[0][2]=='leader' : print("mnode is three nodes")
if tdSql.queryResult[2][2]=='offline': if tdSql.queryResult[0][2]=='leader' :
if tdSql.queryResult[1][2]=='follower': if tdSql.queryResult[2][2]=='offline':
print("stop mnodes on dnode 3 successfully in 10s") if tdSql.queryResult[1][2]=='follower':
break print("stop mnodes on dnode 3 successfully in 10s")
break
count+=1 count+=1
else: else:
print("stop mnodes on dnode 3 failed in 10s") print("stop mnodes on dnode 3 failed in 10s")
return -1
tdSql.error("drop mnode on dnode 3;")
tdSql.query("show mnodes;") tdSql.query("show mnodes;")
tdSql.checkRows(3) tdSql.checkRows(3)
tdSql.checkData(0,1,'%s:6030'%self.host) tdSql.checkData(0,1,'%s:6030'%self.host)
...@@ -264,13 +271,13 @@ class TDTestCase: ...@@ -264,13 +271,13 @@ class TDTestCase:
self.TDDnodes.stoptaosd(3) self.TDDnodes.stoptaosd(3)
self.check3mnode3off() self.check3mnode3off()
self.TDDnodes.starttaosd(2) self.TDDnodes.starttaosd(3)
self.TDDnodes.stoptaosd(1) self.TDDnodes.stoptaosd(1)
self.check3mnode1off() self.check3mnode1off()
self.TDDnodes.starttaosd(1) self.TDDnodes.starttaosd(1)
# self.check3mnode() self.check3mnode()
stopcount =0 stopcount =0
while stopcount <= 2: while stopcount <= 2:
for i in range(dnodenumber): for i in range(dnodenumber):
......
...@@ -13,13 +13,50 @@ import time ...@@ -13,13 +13,50 @@ import time
import socket import socket
import subprocess import subprocess
from multiprocessing import Process from multiprocessing import Process
import threading as thd import threading
import time
import inspect
import ctypes
class MyDnodes(TDDnodes): class MyDnodes(TDDnodes):
def __init__(self ,dnodes_lists): def __init__(self ,dnodes_lists):
super(MyDnodes,self).__init__() super(MyDnodes,self).__init__()
self.dnodes = dnodes_lists # dnode must be TDDnode instance self.dnodes = dnodes_lists # dnode must be TDDnode instance
self.simDeployed = False self.simDeployed = False
class MyThreadFunc(object):
'''
手动终止线程的方法
'''
def __init__(self, func):
self.myThread = threading.Thread(target=func)
def start(self):
print('线程启动')
self.myThread.start()
def stop(self):
print('线程终止')
try:
for i in range(5):
self._async_raise(self.myThread.ident, SystemExit)
time.sleep(1)
except Exception as e:
print(e)
def _async_raise(self, tid, exctype):
"""raises the exception, performs cleanup if needed"""
tid = ctypes.c_long(tid)
if not inspect.isclass(exctype):
exctype = type(exctype)
res = ctypes.pythonapi.PyThreadState_SetAsyncExc(tid, ctypes.py_object(exctype))
if res == 0:
raise ValueError("invalid thread id")
elif res != 1:
# """if it returns a number greater than one, you're in trouble,
# and you should call it again with exc=NULL to revert the effect"""
ctypes.pythonapi.PyThreadState_SetAsyncExc(tid, None)
raise SystemError("PyThreadState_SetAsyncExc failed")
class TDTestCase: class TDTestCase:
def init(self,conn ,logSql): def init(self,conn ,logSql):
...@@ -52,8 +89,11 @@ class TDTestCase: ...@@ -52,8 +89,11 @@ class TDTestCase:
def insert_data(self,countstart,countstop): def insert_data(self,countstart,countstop):
# fisrt add data : db\stable\childtable\general table # fisrt add data : db\stable\childtable\general table
for couti in range(countstart,countstop): for couti in range(countstart,countstop):
tdLog.debug("drop database if exists db%d" %couti)
tdSql.execute("drop database if exists db%d" %couti) tdSql.execute("drop database if exists db%d" %couti)
print("create database if not exists db%d replica 1 days 300" %couti)
tdSql.execute("create database if not exists db%d replica 1 days 300" %couti) tdSql.execute("create database if not exists db%d replica 1 days 300" %couti)
tdSql.execute("use db%d" %couti) tdSql.execute("use db%d" %couti)
tdSql.execute( tdSql.execute(
...@@ -78,6 +118,7 @@ class TDTestCase: ...@@ -78,6 +118,7 @@ class TDTestCase:
hostname = socket.gethostname() hostname = socket.gethostname()
dnodes = [] dnodes = []
start_port = 6030 start_port = 6030
start_port_sec = 6130
for num in range(1, dnodes_nums+1): for num in range(1, dnodes_nums+1):
dnode = TDDnode(num) dnode = TDDnode(num)
dnode.addExtraCfg("firstEp", f"{hostname}:{start_port}") dnode.addExtraCfg("firstEp", f"{hostname}:{start_port}")
...@@ -85,6 +126,7 @@ class TDTestCase: ...@@ -85,6 +126,7 @@ class TDTestCase:
dnode.addExtraCfg("serverPort", f"{start_port + (num-1)*100}") dnode.addExtraCfg("serverPort", f"{start_port + (num-1)*100}")
dnode.addExtraCfg("monitorFqdn", hostname) dnode.addExtraCfg("monitorFqdn", hostname)
dnode.addExtraCfg("monitorPort", 7043) dnode.addExtraCfg("monitorPort", 7043)
dnode.addExtraCfg("secondEp", f"{hostname}:{start_port_sec}")
dnodes.append(dnode) dnodes.append(dnode)
self.TDDnodes = MyDnodes(dnodes) self.TDDnodes = MyDnodes(dnodes)
...@@ -111,30 +153,58 @@ class TDTestCase: ...@@ -111,30 +153,58 @@ class TDTestCase:
time.sleep(2) time.sleep(2)
tdLog.info(" create cluster with %d dnode done! " %dnodes_nums) tdLog.info(" create cluster with %d dnode done! " %dnodes_nums)
def checkdnodes(self,dnodenumber):
count=0
while count < 10:
time.sleep(1)
statusReadyBumber=0
tdSql.query("show dnodes;")
if tdSql.checkRows(dnodenumber) :
print("dnode is %d nodes"%dnodenumber)
for i in range(dnodenumber):
if tdSql.queryResult[i][4] !='ready' :
status=tdSql.queryResult[i][4]
print("dnode:%d status is %s "%(i,status))
break
else:
statusReadyBumber+=1
print(statusReadyBumber)
if statusReadyBumber == dnodenumber :
print("all of %d mnodes is ready in 10s "%dnodenumber)
return True
break
count+=1
else:
print("%d mnodes is not ready in 10s "%dnodenumber)
return False
def check3mnode(self): def check3mnode(self):
count=0 count=0
while count < 10: while count < 10:
time.sleep(1) time.sleep(1)
tdSql.query("show mnodes;") tdSql.query("show mnodes;")
if tdSql.checkRows(3) : if tdSql.checkRows(3) :
if tdSql.queryResult[0][2]=='leader' : print("mnode is three nodes")
if tdSql.queryResult[1][2]=='follower': if tdSql.queryResult[0][2]=='leader' :
if tdSql.queryResult[2][2]=='follower': if tdSql.queryResult[1][2]=='follower':
print("three mnodes is ready in 10s") if tdSql.queryResult[2][2]=='follower':
break print("three mnodes is ready in 10s")
elif tdSql.queryResult[0][2]=='follower' : break
if tdSql.queryResult[1][2]=='leader': elif tdSql.queryResult[0][2]=='follower' :
if tdSql.queryResult[2][2]=='follower': if tdSql.queryResult[1][2]=='leader':
print("three mnodes is ready in 10s") if tdSql.queryResult[2][2]=='follower':
break print("three mnodes is ready in 10s")
elif tdSql.queryResult[0][2]=='follower' : break
if tdSql.queryResult[1][2]=='follower': elif tdSql.queryResult[0][2]=='follower' :
if tdSql.queryResult[2][2]=='leader': if tdSql.queryResult[1][2]=='follower':
print("three mnodes is ready in 10s") if tdSql.queryResult[2][2]=='leader':
break print("three mnodes is ready in 10s")
break
count+=1 count+=1
else: else:
print("three mnodes is not ready in 10s ") print("three mnodes is not ready in 10s ")
return -1
tdSql.query("show mnodes;") tdSql.query("show mnodes;")
tdSql.checkRows(3) tdSql.checkRows(3)
...@@ -146,24 +216,26 @@ class TDTestCase: ...@@ -146,24 +216,26 @@ class TDTestCase:
tdSql.checkData(2,3,'ready') tdSql.checkData(2,3,'ready')
def check3mnode1off(self): def check3mnode1off(self):
tdSql.error("drop mnode on dnode 1;")
count=0 count=0
while count < 10: while count < 10:
time.sleep(1) time.sleep(1)
tdSql.query("show mnodes;") tdSql.query("show mnodes;")
if tdSql.checkRows(3) : if tdSql.checkRows(3) :
if tdSql.queryResult[0][2]=='offline' : print("mnode is three nodes")
if tdSql.queryResult[1][2]=='leader': if tdSql.queryResult[0][2]=='offline' :
if tdSql.queryResult[2][2]=='follower': if tdSql.queryResult[1][2]=='leader':
print("stop mnodes on dnode 2 successfully in 10s") if tdSql.queryResult[2][2]=='follower':
break print("stop mnodes on dnode 2 successfully in 10s")
elif tdSql.queryResult[1][2]=='follower': break
if tdSql.queryResult[2][2]=='leader': elif tdSql.queryResult[1][2]=='follower':
print("stop mnodes on dnode 2 successfully in 10s") if tdSql.queryResult[2][2]=='leader':
break print("stop mnodes on dnode 2 successfully in 10s")
break
count+=1 count+=1
else: else:
print("stop mnodes on dnode 2 failed in 10s ") print("stop mnodes on dnode 2 failed in 10s ")
return -1
tdSql.error("drop mnode on dnode 1;")
tdSql.query("show mnodes;") tdSql.query("show mnodes;")
tdSql.checkRows(3) tdSql.checkRows(3)
...@@ -176,20 +248,22 @@ class TDTestCase: ...@@ -176,20 +248,22 @@ class TDTestCase:
tdSql.checkData(2,3,'ready') tdSql.checkData(2,3,'ready')
def check3mnode2off(self): def check3mnode2off(self):
tdSql.error("drop mnode on dnode 2;")
count=0 count=0
while count < 40: while count < 40:
time.sleep(1) time.sleep(1)
tdSql.query("show mnodes;") tdSql.query("show mnodes;")
if tdSql.checkRows(3) : if tdSql.checkRows(3) :
if tdSql.queryResult[0][2]=='leader' : print("mnode is three nodes")
if tdSql.queryResult[1][2]=='offline': if tdSql.queryResult[0][2]=='leader' :
if tdSql.queryResult[2][2]=='follower': if tdSql.queryResult[1][2]=='offline':
print("stop mnodes on dnode 2 successfully in 10s") if tdSql.queryResult[2][2]=='follower':
break print("stop mnodes on dnode 2 successfully in 10s")
break
count+=1 count+=1
else: else:
print("stop mnodes on dnode 2 failed in 10s ") print("stop mnodes on dnode 2 failed in 10s ")
return -1
tdSql.error("drop mnode on dnode 2;")
tdSql.query("show mnodes;") tdSql.query("show mnodes;")
tdSql.checkRows(3) tdSql.checkRows(3)
...@@ -204,21 +278,22 @@ class TDTestCase: ...@@ -204,21 +278,22 @@ class TDTestCase:
tdSql.checkData(2,3,'ready') tdSql.checkData(2,3,'ready')
def check3mnode3off(self): def check3mnode3off(self):
tdSql.error("drop mnode on dnode 3;")
count=0 count=0
while count < 10: while count < 10:
time.sleep(1) time.sleep(1)
tdSql.query("show mnodes;") tdSql.query("show mnodes;")
if tdSql.checkRows(3) : if tdSql.checkRows(3) :
if tdSql.queryResult[0][2]=='leader' : print("mnode is three nodes")
if tdSql.queryResult[2][2]=='offline': if tdSql.queryResult[0][2]=='leader' :
if tdSql.queryResult[1][2]=='follower': if tdSql.queryResult[2][2]=='offline':
print("stop mnodes on dnode 3 successfully in 10s") if tdSql.queryResult[1][2]=='follower':
break print("stop mnodes on dnode 3 successfully in 10s")
break
count+=1 count+=1
else: else:
print("stop mnodes on dnode 3 failed in 10s") print("stop mnodes on dnode 3 failed in 10s")
return -1
tdSql.error("drop mnode on dnode 3;")
tdSql.query("show mnodes;") tdSql.query("show mnodes;")
tdSql.checkRows(3) tdSql.checkRows(3)
tdSql.checkData(0,1,'%s:6030'%self.host) tdSql.checkData(0,1,'%s:6030'%self.host)
...@@ -231,8 +306,6 @@ class TDTestCase: ...@@ -231,8 +306,6 @@ class TDTestCase:
tdSql.checkData(2,2,'offline') tdSql.checkData(2,2,'offline')
tdSql.checkData(2,3,'ready') tdSql.checkData(2,3,'ready')
def five_dnode_three_mnode(self,dnodenumber): def five_dnode_three_mnode(self,dnodenumber):
tdSql.query("show dnodes;") tdSql.query("show dnodes;")
tdSql.checkData(0,1,'%s:6030'%self.host) tdSql.checkData(0,1,'%s:6030'%self.host)
...@@ -252,43 +325,29 @@ class TDTestCase: ...@@ -252,43 +325,29 @@ class TDTestCase:
# fisrt check statut ready # fisrt check statut ready
self.check3mnode() self.check3mnode()
tdSql.error("create mnode on dnode 2") tdSql.error("create mnode on dnode 2")
tdSql.query("show dnodes;") tdSql.query("show dnodes;")
print(tdSql.queryResult) print(tdSql.queryResult)
tdLog.debug("stop all of mnode ")
tdLog.debug("stop and follower of mnode")
self.TDDnodes.stoptaosd(2)
self.check3mnode2off()
self.TDDnodes.starttaosd(2)
self.TDDnodes.stoptaosd(3)
self.check3mnode3off()
self.TDDnodes.starttaosd(3)
self.TDDnodes.stoptaosd(1)
self.check3mnode1off()
self.TDDnodes.starttaosd(1)
# self.check3mnode()
stopcount =0 stopcount =0
while stopcount <= 2: while stopcount <= 2:
for i in range(dnodenumber): for i in range(dnodenumber):
threads = [] # threads=[]
threads.append(thd.Thread(target=self.insert_data, args=(i*2,i*2+2))) # threads = MyThreadFunc(self.insert_data(i*2,i*2+2))
threads[0].start() threads=threading.Thread(target=self.insert_data, args=((stopcount+i)*2,(i+stopcount)*2+2))
threads.start()
self.TDDnodes.stoptaosd(i+1) self.TDDnodes.stoptaosd(i+1)
# if i == 1 :
# self.check3mnode2off()
# elif i == 2 :
# self.check3mnode3off()
# elif i == 0:
# self.check3mnode1off()
self.TDDnodes.starttaosd(i+1) self.TDDnodes.starttaosd(i+1)
threads[0].join()
if self.checkdnodes(5):
print("123")
threads.join()
else:
print("456")
self._is_stopped = True
assert 1 == 2 ,"some dnode started failed"
return False
# self.check3mnode() # self.check3mnode()
stopcount+=1 stopcount+=1
self.check3mnode() self.check3mnode()
......
...@@ -101,7 +101,7 @@ python3 ./test.py -f 2-query/tail.py ...@@ -101,7 +101,7 @@ python3 ./test.py -f 2-query/tail.py
python3 ./test.py -f 6-cluster/5dnode1mnode.py python3 ./test.py -f 6-cluster/5dnode1mnode.py
python3 ./test.py -f 6-cluster/5dnode2mnode.py python3 ./test.py -f 6-cluster/5dnode2mnode.py
# BUG python3 ./test.py -f 6-cluster/5dnode3mnodeStop.py python3 ./test.py -f 6-cluster/5dnode3mnodeStop.py
python3 ./test.py -f 6-cluster/5dnode3mnodeDrop.py python3 ./test.py -f 6-cluster/5dnode3mnodeDrop.py
# BUG python3 ./test.py -f 6-cluster/5dnode3mnodeStopInsert.py # BUG python3 ./test.py -f 6-cluster/5dnode3mnodeStopInsert.py
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册