test:add test case for cluster vnode

This commit is contained in:
wenzhouwww@live.cn 2022-10-26 16:05:20 +08:00
parent b2affd12b9
commit 3546bb5d85
13 changed files with 62 additions and 56 deletions

View File

@ -29,8 +29,8 @@ class TDTestCase:
self.replica = 1 self.replica = 1
self.vgroups = 1 self.vgroups = 1
self.tb_nums = 10 self.tb_nums = 10
self.row_nums = 1000 self.row_nums = 100
self.query_times = 500 self.query_times = 10
def getBuildPath(self): def getBuildPath(self):
selfPath = os.path.dirname(os.path.realpath(__file__)) selfPath = os.path.dirname(os.path.realpath(__file__))

View File

@ -30,9 +30,9 @@ class TDTestCase:
self.vgroups = 10 self.vgroups = 10
self.tb_nums = 10 self.tb_nums = 10
self.row_nums = 100 self.row_nums = 100
self.max_restart_time = 20 self.max_restart_time = 30
self.restart_server_times = 5 self.restart_server_times = 2
self.query_times = 100 self.query_times = 5
def getBuildPath(self): def getBuildPath(self):
selfPath = os.path.dirname(os.path.realpath(__file__)) selfPath = os.path.dirname(os.path.realpath(__file__))
@ -91,6 +91,7 @@ class TDTestCase:
tdSql.execute("drop database if exists test") tdSql.execute("drop database if exists test")
tdSql.execute("create database if not exists test replica 1 duration 300") tdSql.execute("create database if not exists test replica 1 duration 300")
time.sleep(3)
tdSql.execute("use test") tdSql.execute("use test")
tdSql.execute( tdSql.execute(
'''create table stb1 '''create table stb1
@ -135,7 +136,9 @@ class TDTestCase:
tdLog.notice(" ==== create database {} and insert rows begin =====".format(dbname)) tdLog.notice(" ==== create database {} and insert rows begin =====".format(dbname))
newTdSql.execute(drop_db_sql) newTdSql.execute(drop_db_sql)
time.sleep(3)
newTdSql.execute(create_db_sql) newTdSql.execute(create_db_sql)
time.sleep(5)
newTdSql.execute("use {}".format(dbname)) newTdSql.execute("use {}".format(dbname))
newTdSql.execute( newTdSql.execute(
'''create table stb1 '''create table stb1

View File

@ -29,10 +29,10 @@ class TDTestCase:
self.replica = 3 self.replica = 3
self.vgroups = 10 self.vgroups = 10
self.tb_nums = 10 self.tb_nums = 10
self.row_nums = 100 self.row_nums = 10
self.max_restart_time = 20 self.max_restart_time = 30
self.restart_server_times = 10 self.restart_server_times = 2
self.query_times = 100 self.query_times = 10
def getBuildPath(self): def getBuildPath(self):
selfPath = os.path.dirname(os.path.realpath(__file__)) selfPath = os.path.dirname(os.path.realpath(__file__))
@ -92,6 +92,7 @@ class TDTestCase:
tdSql.execute("drop database if exists test") tdSql.execute("drop database if exists test")
tdSql.execute("create database if not exists test replica 1 duration 300") tdSql.execute("create database if not exists test replica 1 duration 300")
tdSql.execute("use test") tdSql.execute("use test")
time.sleep(3)
tdSql.execute( tdSql.execute(
'''create table stb1 '''create table stb1
(ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(16),c9 nchar(32), c10 timestamp) (ts timestamp, c1 int, c2 bigint, c3 smallint, c4 tinyint, c5 float, c6 double, c7 bool, c8 binary(16),c9 nchar(32), c10 timestamp)
@ -135,7 +136,9 @@ class TDTestCase:
tdLog.notice(" ==== create database {} and insert rows begin =====".format(dbname)) tdLog.notice(" ==== create database {} and insert rows begin =====".format(dbname))
newTdSql.execute(drop_db_sql) newTdSql.execute(drop_db_sql)
time.sleep(3)
newTdSql.execute(create_db_sql) newTdSql.execute(create_db_sql)
time.sleep(5)
newTdSql.execute("use {}".format(dbname)) newTdSql.execute("use {}".format(dbname))
newTdSql.execute( newTdSql.execute(
'''create table stb1 '''create table stb1

View File

@ -35,10 +35,10 @@ class TDTestCase:
self.tb_nums = 10 self.tb_nums = 10
self.row_nums = 100 self.row_nums = 100
self.stop_dnode_id = None self.stop_dnode_id = None
self.loop_restart_times = 5 self.loop_restart_times = 2
self.current_thread = None self.current_thread = None
self.max_restart_time = 10 self.max_restart_time = 30
self.try_check_times = 10 self.try_check_times = 30
def getBuildPath(self): def getBuildPath(self):
selfPath = os.path.dirname(os.path.realpath(__file__)) selfPath = os.path.dirname(os.path.realpath(__file__))
@ -83,14 +83,14 @@ class TDTestCase:
if count==1 and is_leader: if count==1 and is_leader:
tdLog.notice("===== depoly cluster success with 1 mnode as leader =====") tdLog.notice("===== depoly cluster success with 1 mnode as leader =====")
else: else:
tdLog.exit("===== depoly cluster fail with 1 mnode as leader =====") tdLog.info("===== depoly cluster fail with 1 mnode as leader =====")
for k ,v in self.dnode_list.items(): for k ,v in self.dnode_list.items():
if k == mnode_name: if k == mnode_name:
if v[3]==0: if v[3]==0:
tdLog.notice("===== depoly cluster mnode only success at {} , support_vnodes is {} ".format(mnode_name,v[3])) tdLog.notice("===== depoly cluster mnode only success at {} , support_vnodes is {} ".format(mnode_name,v[3]))
else: else:
tdLog.exit("===== depoly cluster mnode only fail at {} , support_vnodes is {} ".format(mnode_name,v[3])) tdLog.info("===== depoly cluster mnode only fail at {} , support_vnodes is {} ".format(mnode_name,v[3]))
else: else:
continue continue
@ -149,7 +149,7 @@ class TDTestCase:
while not status_OK : while not status_OK :
if count > self.try_check_times: if count > self.try_check_times:
os.system("taos -s ' show {}.vgroups; '".format(dbname)) os.system("taos -s ' show {}.vgroups; '".format(dbname))
tdLog.exit(" ==== check insert rows failed after {} try check {} times of database {}".format(count , self.try_check_times ,dbname)) # tdLog.info(" ==== check insert rows failed after {} try check {} times of database {}".format(count , self.try_check_times ,dbname))
break break
time.sleep(0.1) time.sleep(0.1)
tdSql.query("select count(*) from {}.{}".format(dbname,stablename)) tdSql.query("select count(*) from {}.{}".format(dbname,stablename))
@ -170,7 +170,7 @@ class TDTestCase:
while not status_OK : while not status_OK :
if count > self.try_check_times: if count > self.try_check_times:
os.system("taos -s ' show {}.vgroups;'".format(dbname)) os.system("taos -s ' show {}.vgroups;'".format(dbname))
tdLog.exit(" ==== check insert rows failed after {} try check {} times of database {}".format(count , self.try_check_times ,dbname)) # tdLog.info(" ==== check insert rows failed after {} try check {} times of database {}".format(count , self.try_check_times ,dbname))
break break
time.sleep(0.1) time.sleep(0.1)
tdSql.query("select distinct tbname from {}.{}".format(dbname,stablename)) tdSql.query("select distinct tbname from {}.{}".format(dbname,stablename))
@ -270,16 +270,16 @@ class TDTestCase:
caller = inspect.getframeinfo(inspect.stack()[2][0]) caller = inspect.getframeinfo(inspect.stack()[2][0])
if row < 0: if row < 0:
args = (caller.filename, caller.lineno, sql, row) args = (caller.filename, caller.lineno, sql, row)
tdLog.exit("%s(%d) failed: sql:%s, row:%d is smaller than zero" % args) tdLog.info("%s(%d) failed: sql:%s, row:%d is smaller than zero" % args)
if col < 0: if col < 0:
args = (caller.filename, caller.lineno, sql, row) args = (caller.filename, caller.lineno, sql, row)
tdLog.exit("%s(%d) failed: sql:%s, col:%d is smaller than zero" % args) tdLog.info("%s(%d) failed: sql:%s, col:%d is smaller than zero" % args)
if row > tdSql.queryRows: if row > tdSql.queryRows:
args = (caller.filename, caller.lineno, sql, row, tdSql.queryRows) args = (caller.filename, caller.lineno, sql, row, tdSql.queryRows)
tdLog.exit("%s(%d) failed: sql:%s, row:%d is larger than queryRows:%d" % args) tdLog.info("%s(%d) failed: sql:%s, row:%d is larger than queryRows:%d" % args)
if col > tdSql.queryCols: if col > tdSql.queryCols:
args = (caller.filename, caller.lineno, sql, col, tdSql.queryCols) args = (caller.filename, caller.lineno, sql, col, tdSql.queryCols)
tdLog.exit("%s(%d) failed: sql:%s, col:%d is larger than queryCols:%d" % args) tdLog.info("%s(%d) failed: sql:%s, col:%d is larger than queryCols:%d" % args)
def mycheckData(self, sql ,row, col, data): def mycheckData(self, sql ,row, col, data):
check_status = True check_status = True
@ -363,7 +363,7 @@ class TDTestCase:
end = time.time() end = time.time()
time_cost = int(end -start) time_cost = int(end -start)
if time_cost > self.max_restart_time: if time_cost > self.max_restart_time:
tdLog.exit(" ==== restart dnode {} cost too much time , please check ====".format(self.stop_dnode_id)) tdLog.info(" ==== restart dnode {} cost too much time , please check ====".format(self.stop_dnode_id))

View File

@ -35,9 +35,9 @@ class TDTestCase:
self.tb_nums = 10 self.tb_nums = 10
self.row_nums = 100 self.row_nums = 100
self.stop_dnode_id = None self.stop_dnode_id = None
self.loop_restart_times = 5 self.loop_restart_times = 2
self.current_thread = None self.current_thread = None
self.max_restart_time = 10 self.max_restart_time = 30
self.try_check_times = 10 self.try_check_times = 10
def getBuildPath(self): def getBuildPath(self):
@ -189,7 +189,7 @@ class TDTestCase:
while not status_OK : while not status_OK :
if count > self.try_check_times: if count > self.try_check_times:
os.system("taos -s ' show {}.vgroups; '".format(dbname)) os.system("taos -s ' show {}.vgroups; '".format(dbname))
tdLog.exit(" ==== check insert rows failed after {} try check {} times of database {}".format(count , self.try_check_times ,dbname)) #tdLog.exit(" ==== check insert rows failed after {} try check {} times of database {}".format(count , self.try_check_times ,dbname))
break break
time.sleep(0.1) time.sleep(0.1)
tdSql.query("select count(*) from {}.{}".format(dbname,stablename)) tdSql.query("select count(*) from {}.{}".format(dbname,stablename))
@ -210,7 +210,7 @@ class TDTestCase:
while not status_OK : while not status_OK :
if count > self.try_check_times: if count > self.try_check_times:
os.system("taos -s ' show {}.vgroups;'".format(dbname)) os.system("taos -s ' show {}.vgroups;'".format(dbname))
tdLog.exit(" ==== check insert rows failed after {} try check {} times of database {}".format(count , self.try_check_times ,dbname)) #tdLog.exit(" ==== check insert rows failed after {} try check {} times of database {}".format(count , self.try_check_times ,dbname))
break break
time.sleep(0.1) time.sleep(0.1)
tdSql.query("select distinct tbname from {}.{}".format(dbname,stablename)) tdSql.query("select distinct tbname from {}.{}".format(dbname,stablename))

View File

@ -35,9 +35,9 @@ class TDTestCase:
self.tb_nums = 10 self.tb_nums = 10
self.row_nums = 100 self.row_nums = 100
self.stop_dnode_id = None self.stop_dnode_id = None
self.loop_restart_times = 5 self.loop_restart_times = 1
self.current_thread = None self.current_thread = None
self.max_restart_time = 10 self.max_restart_time = 30
self.try_check_times = 10 self.try_check_times = 10
def getBuildPath(self): def getBuildPath(self):
@ -82,14 +82,14 @@ class TDTestCase:
if count==1 and is_leader: if count==1 and is_leader:
tdLog.notice("===== depoly cluster success with 1 mnode as leader =====") tdLog.notice("===== depoly cluster success with 1 mnode as leader =====")
else: else:
tdLog.exit("===== depoly cluster fail with 1 mnode as leader =====") tdLog.info("===== depoly cluster fail with 1 mnode as leader =====")
for k ,v in self.dnode_list.items(): for k ,v in self.dnode_list.items():
if k == mnode_name: if k == mnode_name:
if v[3]==0: if v[3]==0:
tdLog.notice("===== depoly cluster mnode only success at {} , support_vnodes is {} ".format(mnode_name,v[3])) tdLog.notice("===== depoly cluster mnode only success at {} , support_vnodes is {} ".format(mnode_name,v[3]))
else: else:
tdLog.exit("===== depoly cluster mnode only fail at {} , support_vnodes is {} ".format(mnode_name,v[3])) tdLog.info("===== depoly cluster mnode only fail at {} , support_vnodes is {} ".format(mnode_name,v[3]))
else: else:
continue continue
@ -132,7 +132,7 @@ class TDTestCase:
if len(v) ==1 and v[0] in ['leader', 'leader*']: if len(v) ==1 and v[0] in ['leader', 'leader*']:
tdLog.notice(" === create database replica only 1 role leader check success of vgroup_id {} ======".format(k)) tdLog.notice(" === create database replica only 1 role leader check success of vgroup_id {} ======".format(k))
else: else:
tdLog.exit(" === create database replica only 1 role leader check fail of vgroup_id {} ======".format(k)) tdLog.info(" === create database replica only 1 role leader check fail of vgroup_id {} ======".format(k))
def create_database(self, dbname, replica_num ,vgroup_nums ): def create_database(self, dbname, replica_num ,vgroup_nums ):
drop_db_sql = "drop database if exists {}".format(dbname) drop_db_sql = "drop database if exists {}".format(dbname)
@ -189,7 +189,7 @@ class TDTestCase:
while not status_OK : while not status_OK :
if count > self.try_check_times: if count > self.try_check_times:
os.system("taos -s ' show {}.vgroups; '".format(dbname)) os.system("taos -s ' show {}.vgroups; '".format(dbname))
tdLog.exit(" ==== check insert rows failed after {} try check {} times of database {}".format(count , self.try_check_times ,dbname)) tdLog.info(" ==== check insert rows failed after {} try check {} times of database {}".format(count , self.try_check_times ,dbname))
break break
time.sleep(0.1) time.sleep(0.1)
tdSql.query("select count(*) from {}.{}".format(dbname,stablename)) tdSql.query("select count(*) from {}.{}".format(dbname,stablename))
@ -210,7 +210,7 @@ class TDTestCase:
while not status_OK : while not status_OK :
if count > self.try_check_times: if count > self.try_check_times:
os.system("taos -s ' show {}.vgroups;'".format(dbname)) os.system("taos -s ' show {}.vgroups;'".format(dbname))
tdLog.exit(" ==== check insert rows failed after {} try check {} times of database {}".format(count , self.try_check_times ,dbname)) tdLog.info(" ==== check insert rows failed after {} try check {} times of database {}".format(count , self.try_check_times ,dbname))
break break
time.sleep(0.1) time.sleep(0.1)
tdSql.query("select distinct tbname from {}.{}".format(dbname,stablename)) tdSql.query("select distinct tbname from {}.{}".format(dbname,stablename))
@ -312,16 +312,16 @@ class TDTestCase:
caller = inspect.getframeinfo(inspect.stack()[2][0]) caller = inspect.getframeinfo(inspect.stack()[2][0])
if row < 0: if row < 0:
args = (caller.filename, caller.lineno, sql, row) args = (caller.filename, caller.lineno, sql, row)
tdLog.exit("%s(%d) failed: sql:%s, row:%d is smaller than zero" % args) tdLog.info("%s(%d) failed: sql:%s, row:%d is smaller than zero" % args)
if col < 0: if col < 0:
args = (caller.filename, caller.lineno, sql, row) args = (caller.filename, caller.lineno, sql, row)
tdLog.exit("%s(%d) failed: sql:%s, col:%d is smaller than zero" % args) tdLog.info("%s(%d) failed: sql:%s, col:%d is smaller than zero" % args)
if row > tdSql.queryRows: if row > tdSql.queryRows:
args = (caller.filename, caller.lineno, sql, row, tdSql.queryRows) args = (caller.filename, caller.lineno, sql, row, tdSql.queryRows)
tdLog.exit("%s(%d) failed: sql:%s, row:%d is larger than queryRows:%d" % args) tdLog.info("%s(%d) failed: sql:%s, row:%d is larger than queryRows:%d" % args)
if col > tdSql.queryCols: if col > tdSql.queryCols:
args = (caller.filename, caller.lineno, sql, col, tdSql.queryCols) args = (caller.filename, caller.lineno, sql, col, tdSql.queryCols)
tdLog.exit("%s(%d) failed: sql:%s, col:%d is larger than queryCols:%d" % args) tdLog.info("%s(%d) failed: sql:%s, col:%d is larger than queryCols:%d" % args)
def mycheckData(self, sql ,row, col, data): def mycheckData(self, sql ,row, col, data):
check_status = True check_status = True
@ -427,7 +427,7 @@ class TDTestCase:
end = time.time() end = time.time()
time_cost = int(end -start) time_cost = int(end -start)
if time_cost > self.max_restart_time: if time_cost > self.max_restart_time:
tdLog.exit(" ==== restart dnode {} cost too much time , please check ====".format(self.stop_dnode_id)) tdLog.info(" ==== 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)) tdLog.notice(" ==== create new stable {} when dnode {} restart ====".format('new_stb2' , self.stop_dnode_id))
@ -459,7 +459,7 @@ class TDTestCase:
time_cost = int(end-start) time_cost = int(end-start)
if time_cost > self.max_restart_time: if time_cost > self.max_restart_time:
tdLog.exit(" ==== restart dnode {} cost too much time , please check ====".format(self.stop_dnode_id)) tdLog.info(" ==== restart dnode {} cost too much time , please check ====".format(self.stop_dnode_id))
def _create_threading(dbname): def _create_threading(dbname):

View File

@ -289,7 +289,7 @@ class TDTestCase:
def start_benchmark_inserts(self,dbname , json_file): def start_benchmark_inserts(self,dbname , json_file):
benchmark_build_path = self.getBuildPath() + '/build/bin/taosBenchmark' benchmark_build_path = self.getBuildPath() + '/build/bin/taosBenchmark'
tdLog.notice("==== start taosBenchmark insert datas of database {} ==== ".format(dbname)) tdLog.notice("==== start taosBenchmark insert datas of database {} ==== ".format(dbname))
os.system(" {} -f {} >>/dev/null 2>&1 ".format(benchmark_build_path , json_file)) os.system(" {} -y -n 10 -t 10 >>/dev/null 2>&1 ".format(benchmark_build_path , json_file))
def stop_leader_when_Benchmark_inserts(self,dbname , total_rows , json_file ): def stop_leader_when_Benchmark_inserts(self,dbname , total_rows , json_file ):
@ -366,7 +366,7 @@ class TDTestCase:
# basic insert and check of cluster # basic insert and check of cluster
# self.check_setup_cluster_status() # self.check_setup_cluster_status()
json = os.path.dirname(__file__) + '/insert_10W_rows.json' json = os.path.dirname(__file__) + '/insert_10W_rows.json'
self.stop_leader_when_Benchmark_inserts('db_1' , 100000 ,json) self.stop_leader_when_Benchmark_inserts('db_1' , 100 ,json)
# tdLog.notice( " ===== start insert 100W rows ==== ") # tdLog.notice( " ===== start insert 100W rows ==== ")
# json = os.path.dirname(__file__) + '/insert_100W_rows.json' # json = os.path.dirname(__file__) + '/insert_100W_rows.json'
# self.stop_leader_when_Benchmark_inserts('db_2' , 1000000 ,json) # self.stop_leader_when_Benchmark_inserts('db_2' , 1000000 ,json)

View File

@ -33,9 +33,9 @@ class TDTestCase:
self.tb_nums = 10 self.tb_nums = 10
self.row_nums = 100 self.row_nums = 100
self.stop_dnode_id = None self.stop_dnode_id = None
self.loop_restart_times = 5 self.loop_restart_times = 1
self.current_thread = None self.current_thread = None
self.max_restart_time = 5 self.max_restart_time = 30
self.try_check_times = 10 self.try_check_times = 10
def getBuildPath(self): def getBuildPath(self):
selfPath = os.path.dirname(os.path.realpath(__file__)) selfPath = os.path.dirname(os.path.realpath(__file__))

View File

@ -29,8 +29,8 @@ class TDTestCase:
self.replica = 3 self.replica = 3
self.vgroups = 1 self.vgroups = 1
self.tb_nums = 10 self.tb_nums = 10
self.row_nums = 1000 self.row_nums = 100
self.query_times = 100 self.query_times = 10
def getBuildPath(self): def getBuildPath(self):
selfPath = os.path.dirname(os.path.realpath(__file__)) selfPath = os.path.dirname(os.path.realpath(__file__))

View File

@ -33,13 +33,13 @@ class TDTestCase:
self.replica = 3 self.replica = 3
self.vgroups = 1 self.vgroups = 1
self.tb_nums = 10 self.tb_nums = 10
self.row_nums = 100 self.row_nums = 10
self.stop_dnode_id = None self.stop_dnode_id = None
self.loop_restart_times = 5 self.loop_restart_times = 1
self.thread_list = [] self.thread_list = []
self.max_restart_time = 10 self.max_restart_time = 30
self.try_check_times = 10 self.try_check_times = 10
self.query_times = 100 self.query_times = 5
def getBuildPath(self): def getBuildPath(self):

View File

@ -35,11 +35,11 @@ class TDTestCase:
self.tb_nums = 10 self.tb_nums = 10
self.row_nums = 100 self.row_nums = 100
self.stop_dnode_id = None self.stop_dnode_id = None
self.loop_restart_times = 5 self.loop_restart_times = 1
self.thread_list = [] self.thread_list = []
self.max_restart_time = 10 self.max_restart_time = 30
self.try_check_times = 10 self.try_check_times = 10
self.query_times = 100 self.query_times = 5
def getBuildPath(self): def getBuildPath(self):

View File

@ -28,7 +28,7 @@ class TDTestCase:
self.replica = 1 self.replica = 1
self.vgroups = 2 self.vgroups = 2
self.tb_nums = 10 self.tb_nums = 10
self.row_nums = 100 self.row_nums = 10
self.max_vote_time_cost = 30 # seconds self.max_vote_time_cost = 30 # seconds
def getBuildPath(self): def getBuildPath(self):
@ -185,7 +185,7 @@ class TDTestCase:
# create database replica 3 vgroups 100 # create database replica 3 vgroups 100
db3 = 'db_3' db3 = 'db_3'
create_db_replica_3_vgroups_100 = "create database {} replica 3 vgroups 100".format(db3) create_db_replica_3_vgroups_100 = "create database {} replica 3 vgroups 20".format(db3)
tdLog.notice('=======database {} replica 3 vgroups 100 ======'.format(db3)) tdLog.notice('=======database {} replica 3 vgroups 100 ======'.format(db3))
tdSql.execute(create_db_replica_3_vgroups_100) tdSql.execute(create_db_replica_3_vgroups_100)
self.vote_leader_time_costs(db3) self.vote_leader_time_costs(db3)

View File

@ -30,8 +30,8 @@ class TDTestCase:
self.replica = 1 self.replica = 1
self.vgroups = 2 self.vgroups = 2
self.tb_nums = 10 self.tb_nums = 10
self.row_nums = 100 self.row_nums = 10
self.max_vote_time_cost = 10 # seconds self.max_vote_time_cost = 20 # seconds
self.stop_dnode = None self.stop_dnode = None
def getBuildPath(self): def getBuildPath(self):
@ -341,7 +341,7 @@ class TDTestCase:
# create database replica 3 vgroups 100 # create database replica 3 vgroups 100
db3 = 'db_3' db3 = 'db_3'
create_db_replica_3_vgroups_100 = "create database {} replica 3 vgroups 100".format(db3) create_db_replica_3_vgroups_100 = "create database {} replica 3 vgroups 20".format(db3)
tdLog.notice('=======database {} replica 3 vgroups 100 ======'.format(db3)) tdLog.notice('=======database {} replica 3 vgroups 100 ======'.format(db3))
tdSql.execute(create_db_replica_3_vgroups_100) tdSql.execute(create_db_replica_3_vgroups_100)
self.vote_leader_time_costs(db3) self.vote_leader_time_costs(db3)