fix/TS-5251-ad-conflict-check-fix-case

This commit is contained in:
dmchen 2024-11-12 11:26:30 +08:00
parent 73d19520de
commit 8e45332228
2 changed files with 53 additions and 109 deletions

View File

@ -1,62 +0,0 @@
{
"filetype": "insert",
"cfgdir": "/etc/taos",
"host": "127.0.0.1",
"port": 6030,
"user": "root",
"password": "taosdata",
"connection_pool_size": 8,
"num_of_records_per_req": 3000,
"prepared_rand": 3000,
"thread_count": 2,
"create_table_thread_count": 1,
"confirm_parameter_prompt": "no",
"continue_if_fail": "yes",
"databases": [
{
"dbinfo": {
"name": "db",
"drop": "yes",
"vgroups": 2,
"replica": 3,
"duration":"1d",
"wal_retention_period": 1,
"wal_retention_size": 1,
"keep": "3d,6d,30d"
},
"super_tables": [
{
"name": "stb",
"child_table_exists": "no",
"childtable_count": 10,
"insert_rows": 100000000,
"childtable_prefix": "d",
"insert_mode": "taosc",
"timestamp_step": 10000,
"start_timestamp":"now-12d",
"columns": [
{ "type": "bool", "name": "bc"},
{ "type": "float", "name": "fc" },
{ "type": "double", "name": "dc"},
{ "type": "tinyint", "name": "ti"},
{ "type": "smallint", "name": "si" },
{ "type": "int", "name": "ic" },
{ "type": "bigint", "name": "bi" },
{ "type": "utinyint", "name": "uti"},
{ "type": "usmallint", "name": "usi"},
{ "type": "uint", "name": "ui" },
{ "type": "ubigint", "name": "ubi"},
{ "type": "binary", "name": "bin", "len": 16},
{ "type": "nchar", "name": "nch", "len": 32}
],
"tags": [
{"type": "tinyint", "name": "groupid","max": 10,"min": 1},
{"name": "location","type": "binary", "len": 16, "values":
["San Francisco", "Los Angles", "San Diego", "San Jose", "Palo Alto", "Campbell", "Mountain View","Sunnyvale", "Santa Clara", "Cupertino"]
}
]
}
]
}
]
}

View File

@ -10,116 +10,97 @@
###################################################################
# -*- coding: utf-8 -*-
import frame.etool
from frame.caseBase import *
from frame.cases import *
from frame import *
import json
from util.log import *
from util.cases import *
from util.dnodes import *
from util.sql import *
import threading
class TDTestCase(TBase):
class TDTestCase:
def init(self, conn, logSql, replicaVar=1):
tdLog.debug(f"start to init {__file__}")
self.replicaVar = int(replicaVar)
tdSql.init(conn.cursor(), logSql) # output sql.txt file
self.configJsonFile('compactDBConflict.json', 'db', 4, 1, 'compactDBConflict.json', 100000)
def configJsonFile(self, fileName, dbName, vgroups, replica, newFileName='', insert_rows=100000,
timestamp_step=10000):
tdLog.debug(f"configJsonFile {fileName}")
filePath = etool.curFile(__file__, fileName)
with open(filePath, 'r') as f:
data = json.load(f)
if len(newFileName) == 0:
newFileName = fileName
data['databases'][0]['dbinfo']['name'] = dbName
data['databases'][0]['dbinfo']['vgroups'] = vgroups
data['databases'][0]['dbinfo']['replica'] = replica
data['databases'][0]['super_tables'][0]['insert_rows'] = insert_rows
data['databases'][0]['super_tables'][0]['timestamp_step'] = timestamp_step
json_data = json.dumps(data)
filePath = etool.curFile(__file__, newFileName)
with open(filePath, "w") as file:
file.write(json_data)
tdLog.debug(f"configJsonFile {json_data}")
def insertData(self, configFile):
tdLog.info(f"insert data.")
# taosBenchmark run
jfile = etool.curFile(__file__, configFile)
etool.benchMark(json=jfile)
def run(self):
tdLog.debug(f"start to excute {__file__}")
self.insertData('compactDBConflict.json')
tdSql.execute('CREATE DATABASE db vgroups 4 replica 1;')
tdSql.execute('use db')
tdSql.execute('use db;')
tdLog.debug("start test1")
event = threading.Event()
t0 = threading.Thread(target=self.compactDBThread, args=('', event))
t0.start()
tdLog.debug("t0 threading started!!!!!")
tdLog.info("t0 threading started,wait compact db tran finish")
event.wait()
tdSql.error('ALTER DATABASE db REPLICA 3;', expectErrInfo="Transaction not completed due to conflict with compact")
tdLog.info("wait compact db finish")
t0.join()
tdLog.debug("start test2")
event1 = threading.Event()
t1 = threading.Thread(target=self.compactDBThread, args=('', event1))
t1.start()
tdLog.debug("t1 threading started!!!!!")
tdLog.info("t1 threading started,wait compact db tran finish")
event1.wait()
tdSql.error('REDISTRIBUTE VGROUP 5 DNODE 1;', expectErrInfo="Transaction not completed due to conflict with compact")
tdLog.info("wait compact db finish")
t1.join()
tdLog.debug("start test3")
event2 = threading.Event()
t2 = threading.Thread(target=self.compactDBThread, args=('', event2))
t2.start()
tdLog.debug("t2 threading started!!!!!")
tdLog.info("t2 threading started,wait compact db tran finish")
event2.wait()
rowLen = tdSql.query('show vgroups')
if rowLen > 0:
vgroupId = tdSql.getData(0, 0)
tdLog.debug(f"splitVgroupThread vgroupId:{vgroupId}")
tdLog.info(f"splitVgroupThread vgroupId:{vgroupId}")
tdSql.error('REDISTRIBUTE VGROUP 5 DNODE 1;', expectErrInfo="Transaction not completed due to conflict with compact")
tdLog.info("wait compact db finish")
t2.join()
tdLog.debug("start test4")
event3 = threading.Event()
t3 = threading.Thread(target=self.compactDBThread, args=('', event3))
t3.start()
tdLog.debug("t3 threading started!!!!!")
tdLog.info("t3 threading started!!!!!")
event3.wait()
tdSql.error('BALANCE VGROUP;', expectErrInfo="Transaction not completed due to conflict with compact")
t3.join()
tdLog.debug("start test5")
t4 = threading.Thread(target=self.splitVgroupThread)
t4.start()
tdLog.debug("t4 threading started!!!!!")
tdLog.info("t4 threading started!!!!!")
time.sleep(1)
tdSql.error('compact database db;', expectErrInfo="Conflict transaction not completed")
t4.join()
tdLog.debug("start test6")
t5 = threading.Thread(target=self.RedistributeVGroups)
t5.start()
tdLog.debug("t5 threading started!!!!!")
tdLog.info("t5 threading started!!!!!")
time.sleep(1)
tdSql.error('compact database db;', expectErrInfo="Conflict transaction not completed")
t5.join()
tdLog.debug("start test7")
t6 = threading.Thread(target=self.balanceVGROUPThread)
t6.start()
tdLog.debug("t6 threading started!!!!!")
tdLog.info("t6 threading started!!!!!")
time.sleep(1)
tdSql.error('compact database db;', expectErrInfo="Conflict transaction not completed")
t6.join()
tdLog.debug("start test8")
t7 = threading.Thread(target=self.alterDBThread)
t7.start()
tdLog.debug("t7 threading started!!!!!")
tdLog.info("t7 threading started!!!!!")
time.sleep(1)
tdSql.error('compact database db;', expectErrInfo="Conflict transaction not completed")
t7.join()
@ -176,6 +157,31 @@ class TDTestCase(TBase):
if self.waitTransactionZero() is False:
tdLog.info(f"transaction 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("transaction count became zero.")
return True
#tdLog.info(f"i={i} wait ...")
time.sleep(interval)
return False
def waitCompactsZero(self, seconds = 300, interval = 1):
# wait end
for i in range(seconds):
sql ="show compacts;"
rows = tdSql.query(sql)
if rows == 0:
tdLog.info("compacts count became zero.")
return True
#tdLog.info(f"i={i} wait ...")
time.sleep(interval)
return False
def stop(self):
tdSql.close()
tdLog.success(f"{__file__} successfully executed")