fix test cases
This commit is contained in:
parent
788473ff49
commit
458082578c
|
@ -3,7 +3,7 @@ from ssl import ALERT_DESCRIPTION_CERTIFICATE_UNOBTAINABLE
|
|||
import taos
|
||||
import sys
|
||||
import time
|
||||
import os
|
||||
import os
|
||||
|
||||
from util.log import *
|
||||
from util.sql import *
|
||||
|
@ -30,9 +30,9 @@ class TDTestCase:
|
|||
self.ts = 1483200000000
|
||||
self.ts_step =1000
|
||||
self.db_name ='testdb'
|
||||
self.replica = 3
|
||||
self.replica = 3
|
||||
self.vgroups = 1
|
||||
self.tb_nums = 10
|
||||
self.tb_nums = 10
|
||||
self.row_nums = 100
|
||||
self.stop_dnode_id = None
|
||||
self.loop_restart_times = 5
|
||||
|
@ -110,7 +110,7 @@ class TDTestCase:
|
|||
(ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(16),c9 nchar(32), c10 timestamp)
|
||||
'''
|
||||
)
|
||||
|
||||
|
||||
for i in range(5):
|
||||
tdSql.execute("create table sub_tb_{} using stb1 tags({})".format(i,i))
|
||||
tdSql.query("show stables")
|
||||
|
@ -142,7 +142,7 @@ class TDTestCase:
|
|||
tdSql.execute(drop_db_sql)
|
||||
tdSql.execute(create_db_sql)
|
||||
tdSql.execute("use {}".format(dbname))
|
||||
|
||||
|
||||
def create_stable_insert_datas(self,dbname ,stablename , tb_nums , row_nums):
|
||||
tdSql.execute("use {}".format(dbname))
|
||||
tdSql.execute(
|
||||
|
@ -151,7 +151,7 @@ class TDTestCase:
|
|||
tags (t1 int)
|
||||
'''.format(stablename)
|
||||
)
|
||||
|
||||
|
||||
for i in range(tb_nums):
|
||||
sub_tbname = "sub_{}_{}".format(stablename,i)
|
||||
tdSql.execute("create table {} using {} tags({})".format(sub_tbname, stablename ,i))
|
||||
|
@ -162,11 +162,11 @@ class TDTestCase:
|
|||
tdSql.execute(f"insert into {sub_tbname} values ({ts}, {row_num} ,{row_num}, 10 ,1 ,{row_num} ,{row_num},true,'bin_{row_num}','nchar_{row_num}',now) ")
|
||||
|
||||
tdLog.notice(" ==== stable {} insert rows execute end =====".format(stablename))
|
||||
|
||||
|
||||
def append_rows_of_exists_tables(self,dbname ,stablename , tbname , append_nums ):
|
||||
|
||||
|
||||
tdSql.execute("use {}".format(dbname))
|
||||
|
||||
|
||||
for row_num in range(append_nums):
|
||||
tdSql.execute(f"insert into {tbname} values (now, {row_num} ,{row_num}, 10 ,1 ,{row_num} ,{row_num},true,'bin_{row_num}','nchar_{row_num}',now) ")
|
||||
# print(f"insert into {tbname} values (now, {row_num} ,{row_num}, 10 ,1 ,{row_num} ,{row_num},true,'bin_{row_num}','nchar_{row_num}',now) ")
|
||||
|
@ -174,9 +174,9 @@ class TDTestCase:
|
|||
os.system("taos -s 'select count(*) from {}.{}';".format(dbname,stablename))
|
||||
|
||||
def check_insert_rows(self, dbname, stablename , tb_nums , row_nums, append_rows):
|
||||
|
||||
|
||||
tdSql.execute("use {}".format(dbname))
|
||||
|
||||
|
||||
tdSql.query("select count(*) from {}.{}".format(dbname,stablename))
|
||||
|
||||
while not tdSql.queryResult:
|
||||
|
@ -184,8 +184,8 @@ class TDTestCase:
|
|||
tdSql.query("select count(*) from {}.{}".format(dbname,stablename))
|
||||
|
||||
status_OK = self.mycheckData("select count(*) from {}.{}".format(dbname,stablename) ,0 , 0 , tb_nums*row_nums+append_rows)
|
||||
|
||||
count = 0
|
||||
|
||||
count = 0
|
||||
while not status_OK :
|
||||
if count > self.try_check_times:
|
||||
os.system("taos -s ' show {}.vgroups; '".format(dbname))
|
||||
|
@ -199,14 +199,14 @@ class TDTestCase:
|
|||
status_OK = self.mycheckData("select count(*) from {}.{}".format(dbname,stablename) ,0 , 0 , tb_nums*row_nums+append_rows)
|
||||
tdLog.debug(" ==== check insert rows first failed , this is {}_th retry check rows of database {}".format(count , dbname))
|
||||
count += 1
|
||||
|
||||
|
||||
|
||||
tdSql.query("select distinct tbname from {}.{}".format(dbname,stablename))
|
||||
while not tdSql.queryResult:
|
||||
time.sleep(0.1)
|
||||
tdSql.query("select distinct tbname from {}.{}".format(dbname,stablename))
|
||||
status_OK = self.mycheckRows("select distinct tbname from {}.{}".format(dbname,stablename) ,tb_nums)
|
||||
count = 0
|
||||
count = 0
|
||||
while not status_OK :
|
||||
if count > self.try_check_times:
|
||||
os.system("taos -s ' show {}.vgroups;'".format(dbname))
|
||||
|
@ -224,7 +224,7 @@ class TDTestCase:
|
|||
tdSql.query("show {}.vgroups".format(dbname))
|
||||
vgroup_infos = tdSql.queryResult
|
||||
for vgroup_info in vgroup_infos:
|
||||
leader_infos = vgroup_info[3:-4]
|
||||
leader_infos = vgroup_info[3:-4]
|
||||
# print(vgroup_info)
|
||||
for ind ,role in enumerate(leader_infos):
|
||||
if role =='follower':
|
||||
|
@ -236,7 +236,7 @@ class TDTestCase:
|
|||
return self.stop_dnode_id
|
||||
|
||||
def wait_stop_dnode_OK(self):
|
||||
|
||||
|
||||
def _get_status():
|
||||
newTdSql=tdCom.newTdSql()
|
||||
|
||||
|
@ -249,7 +249,7 @@ class TDTestCase:
|
|||
if id == self.stop_dnode_id:
|
||||
status = dnode_status
|
||||
break
|
||||
return status
|
||||
return status
|
||||
|
||||
status = _get_status()
|
||||
while status !="offline":
|
||||
|
@ -259,7 +259,7 @@ class TDTestCase:
|
|||
tdLog.notice("==== stop_dnode has stopped , id is {} ====".format(self.stop_dnode_id))
|
||||
|
||||
def wait_start_dnode_OK(self):
|
||||
|
||||
|
||||
def _get_status():
|
||||
newTdSql=tdCom.newTdSql()
|
||||
status = ""
|
||||
|
@ -271,7 +271,7 @@ class TDTestCase:
|
|||
if id == self.stop_dnode_id:
|
||||
status = dnode_status
|
||||
break
|
||||
return status
|
||||
return status
|
||||
|
||||
status = _get_status()
|
||||
while status !="ready":
|
||||
|
@ -365,7 +365,7 @@ class TDTestCase:
|
|||
tdLog.info("%s(%d) failed: sql:%s, queryRows:%d != expect:%d" % args)
|
||||
check_status = False
|
||||
return check_status
|
||||
|
||||
|
||||
def sync_run_case(self):
|
||||
# stop follower and insert datas , update tables and create new stables
|
||||
tdDnodes=cluster.dnodes
|
||||
|
@ -375,19 +375,19 @@ class TDTestCase:
|
|||
self.create_database(dbname = db_name ,replica_num= self.replica , vgroup_nums= 1)
|
||||
self.create_stable_insert_datas(dbname = db_name , stablename = stablename , tb_nums= 10 ,row_nums= 10 )
|
||||
self.stop_dnode_id = self._get_stop_dnode_id(db_name)
|
||||
|
||||
|
||||
# check rows of datas
|
||||
|
||||
|
||||
self.check_insert_rows(db_name ,stablename ,tb_nums=10 , row_nums= 10 ,append_rows=0)
|
||||
|
||||
# begin stop dnode
|
||||
|
||||
# begin stop dnode
|
||||
start = time.time()
|
||||
tdDnodes[self.stop_dnode_id-1].stoptaosd()
|
||||
|
||||
|
||||
self.wait_stop_dnode_OK()
|
||||
|
||||
# append rows of stablename when dnode stop
|
||||
|
||||
# append rows of stablename when dnode stop
|
||||
|
||||
tbname = "sub_{}_{}".format(stablename , 0)
|
||||
tdLog.notice(" ==== begin append rows of exists table {} when dnode {} offline ====".format(tbname , self.stop_dnode_id))
|
||||
self.append_rows_of_exists_tables(db_name ,stablename , tbname , 100 )
|
||||
|
@ -400,20 +400,20 @@ class TDTestCase:
|
|||
tdLog.notice(" ==== check new stable {} when dnode {} offline ====".format('new_stb1' , self.stop_dnode_id))
|
||||
self.check_insert_rows(db_name ,'new_stb1' ,tb_nums=10 , row_nums= 10 ,append_rows=0)
|
||||
|
||||
# begin start dnode
|
||||
# begin start dnode
|
||||
tdDnodes[self.stop_dnode_id-1].starttaosd()
|
||||
self.wait_start_dnode_OK()
|
||||
end = time.time()
|
||||
time_cost = int(end -start)
|
||||
if time_cost > self.max_restart_time:
|
||||
tdLog.exit(" ==== restart dnode {} cost too much time , please check ====".format(self.stop_dnode_id))
|
||||
|
||||
# create new stables again
|
||||
|
||||
# create new stables again
|
||||
tdLog.notice(" ==== create new stable {} when dnode {} restart ====".format('new_stb2' , self.stop_dnode_id))
|
||||
self.create_stable_insert_datas(dbname = db_name , stablename = 'new_stb2' , tb_nums= 10 ,row_nums= 10 )
|
||||
tdLog.notice(" ==== check new stable {} when dnode {} restart ====".format('new_stb2' , self.stop_dnode_id))
|
||||
self.check_insert_rows(db_name ,'new_stb2' ,tb_nums=10 , row_nums= 10 ,append_rows=0)
|
||||
|
||||
|
||||
def unsync_run_case(self):
|
||||
|
||||
def _restart_dnode_of_db_unsync(dbname):
|
||||
|
@ -427,18 +427,18 @@ class TDTestCase:
|
|||
self.wait_start_dnode_OK()
|
||||
end = time.time()
|
||||
time_cost = int(end-start)
|
||||
|
||||
|
||||
if time_cost > self.max_restart_time:
|
||||
tdLog.exit(" ==== restart dnode {} cost too much time , please check ====".format(self.stop_dnode_id))
|
||||
|
||||
|
||||
|
||||
def _create_threading(dbname):
|
||||
self.current_thread = threading.Thread(target=_restart_dnode_of_db_unsync, args=(dbname,))
|
||||
return self.current_thread
|
||||
|
||||
|
||||
|
||||
'''
|
||||
in this mode , it will be extra threading control start or stop dnode , insert will always going with not care follower online or alive
|
||||
in this mode , it will be extra threading control start or stop dnode , insert will always going with not care follower online or alive
|
||||
'''
|
||||
tdDnodes=cluster.dnodes
|
||||
for loop in range(self.loop_restart_times):
|
||||
|
@ -449,7 +449,7 @@ class TDTestCase:
|
|||
|
||||
tdLog.notice(" ===== restart dnode of database {} in an unsync threading ===== ".format(db_name))
|
||||
|
||||
# create sync threading and start it
|
||||
# create sync threading and start it
|
||||
self.current_thread = _create_threading(db_name)
|
||||
self.current_thread.start()
|
||||
|
||||
|
@ -468,7 +468,7 @@ class TDTestCase:
|
|||
tdLog.notice(" ==== check new stable {} when dnode {} offline ====".format('new_stb1' , self.stop_dnode_id))
|
||||
self.check_insert_rows(db_name ,'new_stb1' ,tb_nums=10 , row_nums= 10 ,append_rows=0)
|
||||
|
||||
# create new stables again
|
||||
# create new stables again
|
||||
tdLog.notice(" ==== create new stable {} when dnode {} restart ====".format('new_stb2' , self.stop_dnode_id))
|
||||
self.create_stable_insert_datas(dbname = db_name , stablename = 'new_stb2' , tb_nums= 10 ,row_nums= 10 )
|
||||
tdLog.notice(" ==== check new stable {} when dnode {} restart ====".format('new_stb2' , self.stop_dnode_id))
|
||||
|
@ -477,7 +477,7 @@ class TDTestCase:
|
|||
self.current_thread.join()
|
||||
|
||||
|
||||
def run(self):
|
||||
def run(self):
|
||||
|
||||
# basic insert and check of cluster
|
||||
self.check_setup_cluster_status()
|
||||
|
@ -485,7 +485,7 @@ class TDTestCase:
|
|||
self.sync_run_case()
|
||||
# self.unsync_run_case()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def stop(self):
|
||||
|
@ -493,4 +493,4 @@ class TDTestCase:
|
|||
tdLog.success(f"{__file__} successfully executed")
|
||||
|
||||
tdCases.addLinux(__file__, TDTestCase())
|
||||
tdCases.addWindows(__file__, TDTestCase())
|
||||
tdCases.addWindows(__file__, TDTestCase())
|
||||
|
|
|
@ -3,7 +3,7 @@ from ssl import ALERT_DESCRIPTION_CERTIFICATE_UNOBTAINABLE
|
|||
import taos
|
||||
import sys
|
||||
import time
|
||||
import os
|
||||
import os
|
||||
|
||||
from util.log import *
|
||||
from util.sql import *
|
||||
|
@ -28,9 +28,9 @@ class TDTestCase:
|
|||
self.ts = 1483200000000
|
||||
self.ts_step =1000
|
||||
self.db_name ='testdb'
|
||||
self.replica = 3
|
||||
self.replica = 3
|
||||
self.vgroups = 1
|
||||
self.tb_nums = 10
|
||||
self.tb_nums = 10
|
||||
self.row_nums = 100
|
||||
self.stop_dnode_id = None
|
||||
self.loop_restart_times = 10
|
||||
|
@ -182,7 +182,7 @@ class TDTestCase:
|
|||
newTdSql.query("show {}.vgroups".format(dbname))
|
||||
vgroup_infos = newTdSql.queryResult
|
||||
for vgroup_info in vgroup_infos:
|
||||
leader_infos = vgroup_info[3:-4]
|
||||
leader_infos = vgroup_info[3:-4]
|
||||
# print(vgroup_info)
|
||||
for ind ,role in enumerate(leader_infos):
|
||||
if role =='leader':
|
||||
|
@ -194,7 +194,7 @@ class TDTestCase:
|
|||
return self.stop_dnode_id
|
||||
|
||||
def wait_stop_dnode_OK(self):
|
||||
|
||||
|
||||
def _get_status():
|
||||
newTdSql=tdCom.newTdSql()
|
||||
|
||||
|
@ -207,7 +207,7 @@ class TDTestCase:
|
|||
if id == self.stop_dnode_id:
|
||||
status = dnode_status
|
||||
break
|
||||
return status
|
||||
return status
|
||||
|
||||
status = _get_status()
|
||||
while status !="offline":
|
||||
|
@ -217,7 +217,7 @@ class TDTestCase:
|
|||
tdLog.notice("==== stop_dnode has stopped , id is {}".format(self.stop_dnode_id))
|
||||
|
||||
def wait_start_dnode_OK(self):
|
||||
|
||||
|
||||
def _get_status():
|
||||
newTdSql=tdCom.newTdSql()
|
||||
status = ""
|
||||
|
@ -229,7 +229,7 @@ class TDTestCase:
|
|||
if id == self.stop_dnode_id:
|
||||
status = dnode_status
|
||||
break
|
||||
return status
|
||||
return status
|
||||
|
||||
status = _get_status()
|
||||
while status !="ready":
|
||||
|
@ -239,7 +239,7 @@ class TDTestCase:
|
|||
tdLog.notice("==== stop_dnode has restart , id is {}".format(self.stop_dnode_id))
|
||||
|
||||
def get_leader_infos(self ,dbname):
|
||||
|
||||
|
||||
newTdSql=tdCom.newTdSql()
|
||||
newTdSql.query("show {}.vgroups".format(dbname))
|
||||
vgroup_infos = newTdSql.queryResult
|
||||
|
@ -259,7 +259,7 @@ class TDTestCase:
|
|||
tdLog.exit(" ===maybe revote not occured , there is no dnode offline ====")
|
||||
else:
|
||||
for vgroup_info in vote_act:
|
||||
for ind , role in enumerate(vgroup_info):
|
||||
for ind , role in enumerate(vgroup_info):
|
||||
if role==self.stop_dnode_id:
|
||||
|
||||
if vgroup_info[ind+1] =="offline" and "leader" in vgroup_info:
|
||||
|
@ -276,25 +276,25 @@ class TDTestCase:
|
|||
benchmark_build_path = self.getBuildPath() + '/build/bin/taosBenchmark'
|
||||
tdLog.notice("==== start taosBenchmark insert datas of database {} ==== ".format(dbname))
|
||||
os.system(" {} -f {} >>/dev/null 2>&1 ".format(benchmark_build_path , json_file))
|
||||
|
||||
|
||||
def stop_leader_when_Benchmark_inserts(self,dbname , total_rows , json_file ):
|
||||
# stop follower and insert datas , update tables and create new stables
|
||||
tdDnodes=cluster.dnodes
|
||||
tdSql.execute(" drop database if exists {} ".format(dbname))
|
||||
tdSql.execute(" create database {} replica {} vgroups {}".format(dbname , self.replica , self.vgroups))
|
||||
|
||||
# start insert datas using taosBenchmark ,expect insert 10000 rows
|
||||
|
||||
|
||||
# start insert datas using taosBenchmark ,expect insert 10000 rows
|
||||
|
||||
self.current_thread = threading.Thread(target=self.start_benchmark_inserts, args=(dbname,json_file))
|
||||
self.current_thread.start()
|
||||
tdSql.query(" show databases ")
|
||||
|
||||
# make sure create database ok
|
||||
|
||||
# make sure create database ok
|
||||
while (tdSql.queryRows!=3):
|
||||
time.sleep(0.5)
|
||||
tdSql.query(" show databases ")
|
||||
|
||||
# # make sure create stable ok
|
||||
# # make sure create stable ok
|
||||
tdSql.query(" show {}.stables ".format(dbname))
|
||||
while (tdSql.queryRows!=1):
|
||||
time.sleep(0.5)
|
||||
|
@ -313,14 +313,14 @@ class TDTestCase:
|
|||
tdLog.debug(" === current insert {} rows in database {} === ".format(tdSql.queryResult[0][0] , dbname))
|
||||
time.sleep(0.01)
|
||||
tdSql.query(" select count(*) from {}.{} ".format(dbname,"stb1"))
|
||||
|
||||
|
||||
tdLog.debug(" === database {} has write {} rows at least ====".format(dbname,total_rows/10))
|
||||
|
||||
self.stop_dnode_id = self._get_stop_dnode_id(dbname)
|
||||
|
||||
# prepare stop leader of database
|
||||
# prepare stop leader of database
|
||||
before_leader_infos = self.get_leader_infos(dbname)
|
||||
|
||||
|
||||
tdDnodes[self.stop_dnode_id-1].stoptaosd()
|
||||
# self.current_thread.join()
|
||||
after_leader_infos = self.get_leader_infos(dbname)
|
||||
|
@ -331,7 +331,7 @@ class TDTestCase:
|
|||
after_leader_infos = self.get_leader_infos(dbname)
|
||||
revote_status = self.check_revote_leader_success(dbname ,before_leader_infos , after_leader_infos)
|
||||
end = time.time()
|
||||
time_cost = end - start
|
||||
time_cost = end - start
|
||||
tdLog.debug(" ==== revote leader of database {} cost time {} ====".format(dbname , time_cost))
|
||||
|
||||
self.current_thread.join()
|
||||
|
@ -344,7 +344,7 @@ class TDTestCase:
|
|||
|
||||
|
||||
|
||||
def run(self):
|
||||
def run(self):
|
||||
|
||||
# basic insert and check of cluster
|
||||
# self.check_setup_cluster_status()
|
||||
|
@ -359,4 +359,4 @@ class TDTestCase:
|
|||
tdLog.success(f"{__file__} successfully executed")
|
||||
|
||||
tdCases.addLinux(__file__, TDTestCase())
|
||||
tdCases.addWindows(__file__, TDTestCase())
|
||||
tdCases.addWindows(__file__, TDTestCase())
|
||||
|
|
|
@ -3,7 +3,7 @@ from ssl import ALERT_DESCRIPTION_CERTIFICATE_UNOBTAINABLE
|
|||
import taos
|
||||
import sys
|
||||
import time
|
||||
import os
|
||||
import os
|
||||
|
||||
from util.log import *
|
||||
from util.sql import *
|
||||
|
@ -30,9 +30,9 @@ class TDTestCase:
|
|||
self.ts = 1483200000000
|
||||
self.ts_step =1000
|
||||
self.db_name ='testdb'
|
||||
self.replica = 3
|
||||
self.replica = 3
|
||||
self.vgroups = 1
|
||||
self.tb_nums = 10
|
||||
self.tb_nums = 10
|
||||
self.row_nums = 100
|
||||
self.stop_dnode_id = None
|
||||
self.loop_restart_times = 5
|
||||
|
@ -40,7 +40,7 @@ class TDTestCase:
|
|||
self.max_restart_time = 10
|
||||
self.try_check_times = 10
|
||||
self.query_times = 100
|
||||
|
||||
|
||||
|
||||
def getBuildPath(self):
|
||||
selfPath = os.path.dirname(os.path.realpath(__file__))
|
||||
|
@ -103,7 +103,7 @@ class TDTestCase:
|
|||
tdSql.execute(drop_db_sql)
|
||||
tdSql.execute(create_db_sql)
|
||||
tdSql.execute("use {}".format(dbname))
|
||||
|
||||
|
||||
def create_stable_insert_datas(self,dbname ,stablename , tb_nums , row_nums):
|
||||
tdSql.execute("use {}".format(dbname))
|
||||
tdSql.execute(
|
||||
|
@ -112,7 +112,7 @@ class TDTestCase:
|
|||
tags (t1 int)
|
||||
'''.format(stablename)
|
||||
)
|
||||
|
||||
|
||||
for i in range(tb_nums):
|
||||
sub_tbname = "sub_{}_{}".format(stablename,i)
|
||||
tdSql.execute("create table {} using {} tags({})".format(sub_tbname, stablename ,i))
|
||||
|
@ -123,11 +123,11 @@ class TDTestCase:
|
|||
tdSql.execute(f"insert into {sub_tbname} values ({ts}, {row_num} ,{row_num}, 10 ,1 ,{row_num} ,{row_num},true,'bin_{row_num}','nchar_{row_num}',now) ")
|
||||
|
||||
tdLog.notice(" ==== stable {} insert rows execute end =====".format(stablename))
|
||||
|
||||
|
||||
def append_rows_of_exists_tables(self,dbname ,stablename , tbname , append_nums ):
|
||||
|
||||
|
||||
tdSql.execute("use {}".format(dbname))
|
||||
|
||||
|
||||
for row_num in range(append_nums):
|
||||
tdSql.execute(f"insert into {tbname} values (now, {row_num} ,{row_num}, 10 ,1 ,{row_num} ,{row_num},true,'bin_{row_num}','nchar_{row_num}',now) ")
|
||||
# print(f"insert into {tbname} values (now, {row_num} ,{row_num}, 10 ,1 ,{row_num} ,{row_num},true,'bin_{row_num}','nchar_{row_num}',now) ")
|
||||
|
@ -137,7 +137,7 @@ class TDTestCase:
|
|||
def check_insert_rows(self, dbname, stablename , tb_nums , row_nums, append_rows):
|
||||
|
||||
tdSql.execute("use {}".format(dbname))
|
||||
|
||||
|
||||
tdSql.query("select count(*) from {}.{}".format(dbname,stablename))
|
||||
|
||||
while not tdSql.queryResult:
|
||||
|
@ -145,8 +145,8 @@ class TDTestCase:
|
|||
tdSql.query("select count(*) from {}.{}".format(dbname,stablename))
|
||||
|
||||
status_OK = self.mycheckData("select count(*) from {}.{}".format(dbname,stablename) ,0 , 0 , tb_nums*row_nums+append_rows)
|
||||
|
||||
count = 0
|
||||
|
||||
count = 0
|
||||
while not status_OK :
|
||||
if count > self.try_check_times:
|
||||
os.system("taos -s ' show {}.vgroups; '".format(dbname))
|
||||
|
@ -160,14 +160,14 @@ class TDTestCase:
|
|||
status_OK = self.mycheckData("select count(*) from {}.{}".format(dbname,stablename) ,0 , 0 , tb_nums*row_nums+append_rows)
|
||||
tdLog.notice(" ==== check insert rows first failed , this is {}_th retry check rows of database {}".format(count , dbname))
|
||||
count += 1
|
||||
|
||||
|
||||
|
||||
tdSql.query("select distinct tbname from {}.{}".format(dbname,stablename))
|
||||
while not tdSql.queryResult:
|
||||
time.sleep(0.1)
|
||||
tdSql.query("select distinct tbname from {}.{}".format(dbname,stablename))
|
||||
status_OK = self.mycheckRows("select distinct tbname from {}.{}".format(dbname,stablename) ,tb_nums)
|
||||
count = 0
|
||||
count = 0
|
||||
while not status_OK :
|
||||
if count > self.try_check_times:
|
||||
os.system("taos -s ' show {}.vgroups;'".format(dbname))
|
||||
|
@ -186,7 +186,7 @@ class TDTestCase:
|
|||
tdSql.query("show {}.vgroups".format(dbname))
|
||||
vgroup_infos = tdSql.queryResult
|
||||
for vgroup_info in vgroup_infos:
|
||||
leader_infos = vgroup_info[3:-4]
|
||||
leader_infos = vgroup_info[3:-4]
|
||||
# print(vgroup_info)
|
||||
for ind ,role in enumerate(leader_infos):
|
||||
if role =='leader':
|
||||
|
@ -198,7 +198,7 @@ class TDTestCase:
|
|||
return self.stop_dnode_id
|
||||
|
||||
def wait_stop_dnode_OK(self):
|
||||
|
||||
|
||||
def _get_status():
|
||||
newTdSql=tdCom.newTdSql()
|
||||
|
||||
|
@ -211,7 +211,7 @@ class TDTestCase:
|
|||
if id == self.stop_dnode_id:
|
||||
status = dnode_status
|
||||
break
|
||||
return status
|
||||
return status
|
||||
|
||||
status = _get_status()
|
||||
while status !="offline":
|
||||
|
@ -229,7 +229,7 @@ class TDTestCase:
|
|||
tdLog.info(" ===maybe revote not occured , there is no dnode offline ====")
|
||||
else:
|
||||
for vgroup_info in vote_act:
|
||||
for ind , role in enumerate(vgroup_info):
|
||||
for ind , role in enumerate(vgroup_info):
|
||||
if role==self.stop_dnode_id:
|
||||
|
||||
if vgroup_info[ind+1] =="offline" and "leader" in vgroup_info:
|
||||
|
@ -243,7 +243,7 @@ class TDTestCase:
|
|||
return check_status
|
||||
|
||||
def wait_start_dnode_OK(self):
|
||||
|
||||
|
||||
def _get_status():
|
||||
newTdSql=tdCom.newTdSql()
|
||||
status = ""
|
||||
|
@ -255,7 +255,7 @@ class TDTestCase:
|
|||
if id == self.stop_dnode_id:
|
||||
status = dnode_status
|
||||
break
|
||||
return status
|
||||
return status
|
||||
|
||||
status = _get_status()
|
||||
while status !="ready":
|
||||
|
@ -349,10 +349,10 @@ class TDTestCase:
|
|||
tdLog.info("%s(%d) failed: sql:%s, queryRows:%d != expect:%d" % args)
|
||||
check_status = False
|
||||
return check_status
|
||||
|
||||
|
||||
|
||||
|
||||
def get_leader_infos(self ,dbname):
|
||||
|
||||
|
||||
newTdSql=tdCom.newTdSql()
|
||||
newTdSql.query("show {}.vgroups".format(dbname))
|
||||
vgroup_infos = newTdSql.queryResult
|
||||
|
@ -369,7 +369,7 @@ class TDTestCase:
|
|||
port = None
|
||||
for dnode_info in tdSql.queryResult:
|
||||
if dnode_id == dnode_info[0]:
|
||||
port = dnode_info[1].split(":")[-1]
|
||||
port = dnode_info[1].split(":")[-1]
|
||||
break
|
||||
else:
|
||||
continue
|
||||
|
@ -383,9 +383,9 @@ class TDTestCase:
|
|||
os.system(ps_kill_taosd)
|
||||
|
||||
def basic_query_task(self,dbname ,stablename):
|
||||
|
||||
|
||||
sql = "select * from {}.{} ;".format(dbname , stablename)
|
||||
|
||||
|
||||
count = 0
|
||||
while count < self.query_times:
|
||||
os.system(''' taos -s '{}' >>/dev/null '''.format(sql))
|
||||
|
@ -398,35 +398,35 @@ class TDTestCase:
|
|||
self.thread_list.append(task)
|
||||
|
||||
for thread in self.thread_list:
|
||||
|
||||
|
||||
thread.start()
|
||||
return self.thread_list
|
||||
|
||||
|
||||
def stop_follower_when_query_going(self):
|
||||
|
||||
|
||||
tdDnodes = cluster.dnodes
|
||||
self.create_database(dbname = self.db_name ,replica_num= self.replica , vgroup_nums= 1)
|
||||
self.create_stable_insert_datas(dbname = self.db_name , stablename = "stb1" , tb_nums= self.tb_nums ,row_nums= self.row_nums)
|
||||
|
||||
# let query task start
|
||||
# let query task start
|
||||
self.thread_list = self.multi_thread_query_task(10 ,self.db_name ,'stb1' )
|
||||
|
||||
# force stop follower
|
||||
for loop in range(self.loop_restart_times):
|
||||
tdLog.debug(" ==== this is {}_th restart follower of database {} ==== ".format(loop ,self.db_name))
|
||||
|
||||
# get leader info before stop
|
||||
# get leader info before stop
|
||||
before_leader_infos = self.get_leader_infos(self.db_name)
|
||||
|
||||
self.stop_dnode_id = self._get_stop_dnode_id(self.db_name)
|
||||
tdDnodes[self.stop_dnode_id-1].stoptaosd()
|
||||
|
||||
|
||||
|
||||
start = time.time()
|
||||
# get leader info after stop
|
||||
# get leader info after stop
|
||||
after_leader_infos = self.get_leader_infos(self.db_name)
|
||||
|
||||
|
||||
revote_status = self.check_revote_leader_success(self.db_name ,before_leader_infos , after_leader_infos)
|
||||
|
||||
while not revote_status:
|
||||
|
@ -434,7 +434,7 @@ class TDTestCase:
|
|||
revote_status = self.check_revote_leader_success(self.db_name ,before_leader_infos , after_leader_infos)
|
||||
|
||||
end = time.time()
|
||||
time_cost = end - start
|
||||
time_cost = end - start
|
||||
tdLog.debug(" ==== revote leader of database {} cost time {} ====".format(self.db_name , time_cost))
|
||||
|
||||
self.wait_stop_dnode_OK()
|
||||
|
@ -444,22 +444,22 @@ class TDTestCase:
|
|||
self.wait_start_dnode_OK()
|
||||
end = time.time()
|
||||
time_cost = int(end-start)
|
||||
|
||||
|
||||
if time_cost > self.max_restart_time:
|
||||
tdLog.exit(" ==== restart dnode {} cost too much time , please check ====".format(self.stop_dnode_id))
|
||||
|
||||
|
||||
for thread in self.thread_list:
|
||||
thread.join()
|
||||
|
||||
|
||||
def run(self):
|
||||
def run(self):
|
||||
|
||||
# basic check of cluster
|
||||
self.check_setup_cluster_status()
|
||||
self.stop_follower_when_query_going()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def stop(self):
|
||||
|
@ -467,4 +467,4 @@ class TDTestCase:
|
|||
tdLog.success(f"{__file__} successfully executed")
|
||||
|
||||
tdCases.addLinux(__file__, TDTestCase())
|
||||
tdCases.addWindows(__file__, TDTestCase())
|
||||
tdCases.addWindows(__file__, TDTestCase())
|
||||
|
|
Loading…
Reference in New Issue