coverage: snapshot add balance operator
This commit is contained in:
parent
fcc8185e45
commit
aed127ab0b
|
@ -36,7 +36,7 @@
|
|||
{ "type": "bool", "name": "bc"},
|
||||
{ "type": "float", "name": "fc" },
|
||||
{ "type": "double", "name": "dc"},
|
||||
{ "type": "tinyint", "name": "ti", "values":["1"]},
|
||||
{ "type": "tinyint", "name": "ti"},
|
||||
{ "type": "smallint", "name": "si" },
|
||||
{ "type": "int", "name": "ic" },
|
||||
{ "type": "bigint", "name": "bi" },
|
||||
|
|
|
@ -13,11 +13,13 @@
|
|||
|
||||
import sys
|
||||
import time
|
||||
import random
|
||||
|
||||
import taos
|
||||
import frame
|
||||
import frame.etool
|
||||
|
||||
|
||||
from frame.log import *
|
||||
from frame.cases import *
|
||||
from frame.sql import *
|
||||
|
@ -43,7 +45,21 @@ class TDTestCase(TBase):
|
|||
def doAction(self):
|
||||
tdLog.info(f"do action.")
|
||||
self.flushDb()
|
||||
|
||||
# split vgroups
|
||||
self.splitVGroups()
|
||||
self.trimDb()
|
||||
|
||||
# balance vgroups
|
||||
self.balanceVGroupLeader()
|
||||
|
||||
# replica to 1
|
||||
self.alterReplica(1)
|
||||
|
||||
vgids = self.getVGroup()
|
||||
selid = random.choice(vgids)
|
||||
self.balanceVGroupLeaderOn(selid)
|
||||
|
||||
self.compactDb()
|
||||
|
||||
# run
|
||||
|
|
|
@ -15,6 +15,7 @@ import sys
|
|||
import os
|
||||
import time
|
||||
import datetime
|
||||
import random
|
||||
|
||||
from frame.log import *
|
||||
from frame.sql import *
|
||||
|
@ -47,7 +48,8 @@ class TBase:
|
|||
self.sqlMax = f"select max(ic) from {self.stb}"
|
||||
self.sqlMin = f"select min(ic) from {self.stb}"
|
||||
self.sqlAvg = f"select avg(ic) from {self.stb}"
|
||||
|
||||
self.sqlFirst = f"select first(ts) from {self.stb}"
|
||||
self.sqlLast = f"select last(ts) from {self.stb}"
|
||||
|
||||
# stop
|
||||
def stop(self):
|
||||
|
@ -70,6 +72,50 @@ class TBase:
|
|||
def dropDb(self, show = False):
|
||||
tdSql.execute(f"drop database {self.db}", show = show)
|
||||
|
||||
def splitVGroups(self):
|
||||
vgids = self.getVGroup(self.db)
|
||||
selid = random.choice(vgids)
|
||||
sql = f"split vgroup {selid}"
|
||||
tdSql.execute(sql, show=True)
|
||||
if self.waitTransactionZero() is False:
|
||||
tdLog.exit(f"{sql} transaction not finished")
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
def alterReplica(self, replica):
|
||||
sql = f"alter database {self.db} replica {replica}"
|
||||
tdSql.execute(sql, show=True)
|
||||
if self.waitTransactionZero() is False:
|
||||
tdLog.exit(f"{sql} transaction not finished")
|
||||
return False
|
||||
return True
|
||||
|
||||
def balanceVGroup(self):
|
||||
sql = f"balance vgroup"
|
||||
tdSql.execute(sql, show=True)
|
||||
if self.waitTransactionZero() is False:
|
||||
tdLog.exit(f"{sql} transaction not finished")
|
||||
return False
|
||||
return True
|
||||
|
||||
def balanceVGroupLeader(self):
|
||||
sql = f"balance vgroup leader"
|
||||
tdSql.execute(sql, show=True)
|
||||
if self.waitTransactionZero() is False:
|
||||
tdLog.exit(f"{sql} transaction not finished")
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
def balanceVGroupLeaderOn(self, vgId):
|
||||
sql = f"balance vgroup leader on {vgId}"
|
||||
tdSql.execute(sql, show=True)
|
||||
if self.waitTransactionZero() is False:
|
||||
tdLog.exit(f"{sql} transaction not finished")
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
#
|
||||
# check db correct
|
||||
|
@ -90,12 +136,13 @@ class TBase:
|
|||
tdSql.checkAgg(sql, 0)
|
||||
|
||||
# save agg result
|
||||
def snapshotAgg(self):
|
||||
|
||||
def snapshotAgg(self):
|
||||
self.sum = tdSql.getFirstValue(self.sqlSum)
|
||||
self.avg = tdSql.getFirstValue(self.sqlAvg)
|
||||
self.min = tdSql.getFirstValue(self.sqlMin)
|
||||
self.max = tdSql.getFirstValue(self.sqlMax)
|
||||
self.first = tdSql.getFirstValue(self.sqlFirst)
|
||||
self.last = tdSql.getFirstValue(self.sqlLast)
|
||||
|
||||
# check agg
|
||||
def checkAggCorrect(self):
|
||||
|
@ -103,3 +150,41 @@ class TBase:
|
|||
tdSql.checkAgg(self.sqlAvg, self.avg)
|
||||
tdSql.checkAgg(self.sqlMin, self.min)
|
||||
tdSql.checkAgg(self.sqlMax, self.max)
|
||||
tdSql.checkAgg(self.sqlFirst, self.first)
|
||||
tdSql.checkAgg(self.sqlLast, self.last)
|
||||
|
||||
|
||||
#
|
||||
# get db information
|
||||
#
|
||||
|
||||
# get vgroups
|
||||
def getVGroup(self, db_name):
|
||||
vgidList = []
|
||||
sql = f"select vgroup_id from information_schema.ins_vgroups where db_name='{db_name}'"
|
||||
res = tdSql.getResult(sql)
|
||||
rows = len(res)
|
||||
for i in range(rows):
|
||||
vgidList.append(res[i][0])
|
||||
|
||||
return vgidList
|
||||
|
||||
|
||||
|
||||
#
|
||||
# util
|
||||
#
|
||||
|
||||
# wait transactions count to zero , return False is translation not finished
|
||||
def waitTransactionZero(self, seconds = 300, interval = 1):
|
||||
# wait end
|
||||
for i in range(seconds):
|
||||
sql ="show transactions;"
|
||||
rows = tdSql.query(sql)
|
||||
if rows == 0:
|
||||
tdLog.info("split vgroup finished.")
|
||||
return True
|
||||
#tdLog.info(f"i={i} wait ...")
|
||||
time.sleep(interval)
|
||||
|
||||
return False
|
||||
|
|
|
@ -84,8 +84,8 @@ SWords shellCommands[] = {
|
|||
{"alter topic", 0, 0, NULL},
|
||||
{"alter user <user_name> <user_actions> <anyword> ;", 0, 0, NULL},
|
||||
#ifdef TD_ENTERPRISE
|
||||
{"balance vgroup;", 0, 0, NULL},
|
||||
{"balance vgroup leader <vgroup_id>", 0, 0, NULL},
|
||||
{"balance vgroup ;", 0, 0, NULL},
|
||||
{"balance vgroup leader on <vgroup_id>", 0, 0, NULL},
|
||||
#endif
|
||||
|
||||
// 20
|
||||
|
@ -531,8 +531,8 @@ void showHelp() {
|
|||
printf(
|
||||
"\n\n\
|
||||
----- special commands on enterpise version ----- \n\
|
||||
balance vgroup; \n\
|
||||
balance vgroup leader <vgroup_id> \n\
|
||||
balance vgroup ;\n\
|
||||
balance vgroup leader on <vgroup_id> \n\
|
||||
compact database <db_name>; \n\
|
||||
redistribute vgroup <vgroup_id> dnode <dnode_id> ;\n\
|
||||
split vgroup <vgroup_id>;");
|
||||
|
|
Loading…
Reference in New Issue