update bottom.py
This commit is contained in:
parent
e70ec32c11
commit
91735042b7
|
@ -17,100 +17,140 @@ from util.log import *
|
|||
from util.cases import *
|
||||
from util.sql import *
|
||||
from util.common import *
|
||||
|
||||
from util.sqlset import *
|
||||
|
||||
|
||||
class TDTestCase:
|
||||
def init(self, conn, logSql):
|
||||
tdLog.debug("start to execute %s" % __file__)
|
||||
tdSql.init(conn.cursor())
|
||||
|
||||
self.dbname = 'db_test'
|
||||
self.setsql = TDSetSql()
|
||||
self.ntbname = 'ntb'
|
||||
self.rowNum = 10
|
||||
self.tbnum = 20
|
||||
self.ts = 1537146000000
|
||||
self.binary_str = 'taosdata'
|
||||
self.nchar_str = '涛思数据'
|
||||
def bottom_check_base(self):
|
||||
tdSql.prepare()
|
||||
tdSql.execute('''create table stb(ts timestamp, col1 tinyint, col2 smallint, col3 int, col4 bigint, col5 tinyint unsigned, col6 smallint unsigned,
|
||||
col7 int unsigned, col8 bigint unsigned, col9 float, col10 double, col11 bool, col12 binary(20), col13 nchar(20)) tags(loc nchar(20))''')
|
||||
tdSql.execute("create table stb_1 using stb tags('beijing')")
|
||||
column_list = ['col1','col2','col3','col4','col5','col6','col7','col8']
|
||||
error_column_list = ['col11','col12','col13']
|
||||
error_param_list = [0,101]
|
||||
for i in range(self.rowNum):
|
||||
tdSql.execute(f"insert into stb_1 values(%d, %d, %d, %d, %d, %d, %d, %d, %d, %f, %f, %d, '{self.binary_str}%d', '{self.nchar_str}%d')"
|
||||
% (self.ts + i, i + 1, i + 1, i + 1, i + 1, i + 1, i + 1, i + 1, i + 1, i + 0.1, i + 0.1, i % 2, i + 1, i + 1))
|
||||
self.column_dict = {
|
||||
'ts' : 'timestamp',
|
||||
'col1': 'tinyint',
|
||||
'col2': 'smallint',
|
||||
'col3': 'int',
|
||||
'col4': 'bigint',
|
||||
'col5': 'tinyint unsigned',
|
||||
'col6': 'smallint unsigned',
|
||||
'col7': 'int unsigned',
|
||||
'col8': 'bigint unsigned',
|
||||
'col9': 'float',
|
||||
'col10': 'double',
|
||||
'col11': 'bool',
|
||||
'col12': 'binary(20)',
|
||||
'col13': 'nchar(20)'
|
||||
}
|
||||
|
||||
for i in column_list:
|
||||
tdSql.query(f'select bottom({i},2) from stb_1')
|
||||
tdSql.checkRows(2)
|
||||
tdSql.checkEqual(tdSql.queryResult,[(2,),(1,)])
|
||||
for j in error_param_list:
|
||||
tdSql.error(f'select bottom({i},{j}) from stb_1')
|
||||
for i in error_column_list:
|
||||
tdSql.error(f'select bottom({i},10) from stb_1')
|
||||
tdSql.query("select ts,bottom(col1, 2),ts from stb_1 group by tbname")
|
||||
tdSql.checkRows(2)
|
||||
tdSql.query('select bottom(col2,1) from stb_1 interval(1y) order by col2')
|
||||
tdSql.checkData(0,0,1)
|
||||
|
||||
tdSql.error('select * from stb_1 where bottom(col2,1)=1')
|
||||
tdSql.execute('drop database db')
|
||||
def bottom_check_distribute(self):
|
||||
# prepare data for vgroup 4
|
||||
dbname = tdCom.getLongName(5, "letters")
|
||||
self.param_list = [1,100]
|
||||
def insert_data(self,column_dict,tbname,row_num):
|
||||
sql = ''
|
||||
for k, v in column_dict.items():
|
||||
if v.lower() == 'timestamp' or v.lower() == 'tinyint' or v.lower() == 'smallint' or v.lower() == 'int' or v.lower() == 'bigint' or \
|
||||
v.lower() == 'tinyint unsigned' or v.lower() == 'smallint unsigned' or v.lower() == 'int unsigned' or v.lower() == 'bigint unsigned' or v.lower() == 'bool':
|
||||
sql += '%d,'
|
||||
elif v.lower() == 'float' or v.lower() == 'double':
|
||||
sql += '%f,'
|
||||
elif 'binary' in v.lower():
|
||||
sql += f'"{self.binary_str}%d",'
|
||||
elif 'nchar' in v.lower():
|
||||
sql += f'"{self.nchar_str}%d",'
|
||||
insert_sql = f'insert into {tbname} values({sql[:-1]})'
|
||||
for i in range(row_num):
|
||||
insert_list = []
|
||||
for k, v in column_dict.items():
|
||||
if v.lower() in[ 'tinyint' , 'smallint' , 'int', 'bigint' , 'tinyint unsigned' , 'smallint unsigned' , 'int unsigned' , 'bigint unsigned'] or\
|
||||
'binary' in v.lower() or 'nchar' in v.lower():
|
||||
insert_list.append(0 + i)
|
||||
elif v.lower() == 'float' or v.lower() == 'double':
|
||||
insert_list.append(0.1 + i)
|
||||
elif v.lower() == 'bool':
|
||||
insert_list.append(i % 2)
|
||||
elif v.lower() == 'timestamp':
|
||||
insert_list.append(self.ts + i)
|
||||
tdSql.execute(insert_sql%(tuple(insert_list)))
|
||||
def bottom_check_data(self,tbname,tb_type):
|
||||
new_column_dict = {}
|
||||
for param in self.param_list:
|
||||
for k,v in self.column_dict.items():
|
||||
if v.lower() in ['tinyint','smallint','int','bigint','tinyint unsigned','smallint unsigned','int unsigned','bigint unsigned']:
|
||||
tdSql.query(f'select bottom({k},{param}) from {tbname} order by {k}')
|
||||
if param >= self.rowNum:
|
||||
if tb_type in ['normal_table','child_table']:
|
||||
tdSql.checkRows(self.rowNum)
|
||||
values_list = []
|
||||
for i in range(self.rowNum):
|
||||
tp = (i,)
|
||||
values_list.append(tp)
|
||||
tdSql.checkEqual(tdSql.queryResult,values_list)
|
||||
elif tb_type == 'stable':
|
||||
tdSql.checkRows(param)
|
||||
elif param < self.rowNum:
|
||||
if tb_type in ['normal_table','child_table']:
|
||||
tdSql.checkRows(param)
|
||||
values_list = []
|
||||
for i in range(param):
|
||||
tp = (i,)
|
||||
values_list.append(tp)
|
||||
tdSql.checkEqual(tdSql.queryResult,values_list)
|
||||
elif tb_type == 'stable':
|
||||
tdSql.checkRows(param)
|
||||
for i in [self.param_list[0]-1,self.param_list[-1]+1]:
|
||||
tdSql.error(f'select top({k},{i}) from {tbname}')
|
||||
new_column_dict.update({k:v})
|
||||
elif v.lower() == 'bool' or 'binary' in v.lower() or 'nchar' in v.lower():
|
||||
tdSql.error(f'select top({k},{param}) from {tbname}')
|
||||
tdSql.error(f'select * from {tbname} where top({k},{param})=1')
|
||||
pass
|
||||
def bottom_check_ntb(self):
|
||||
tdSql.execute(f'create database if not exists {self.dbname} vgroups 1')
|
||||
tdSql.execute(f'use {self.dbname}')
|
||||
tdSql.execute(self.setsql.set_create_normaltable_sql(self.ntbname,self.column_dict))
|
||||
self.insert_data(self.column_dict,self.ntbname,self.rowNum)
|
||||
self.bottom_check_data(self.ntbname,'normal_table')
|
||||
tdSql.execute(f'drop database {self.dbname}')
|
||||
def bottom_check_stb(self):
|
||||
stbname = tdCom.getLongName(5, "letters")
|
||||
vgroup_num = 2
|
||||
child_table_num = 20
|
||||
tdSql.execute(f"create database if not exists {dbname} vgroups {vgroup_num}")
|
||||
tdSql.execute(f'use {dbname}')
|
||||
# build 20 child tables,every table insert 10 rows
|
||||
tdSql.execute(f'''create table {stbname}(ts timestamp, col1 tinyint, col2 smallint, col3 int, col4 bigint, col5 tinyint unsigned, col6 smallint unsigned,
|
||||
col7 int unsigned, col8 bigint unsigned, col9 float, col10 double, col11 bool, col12 binary(20), col13 nchar(20)) tags(loc nchar(20))''')
|
||||
for i in range(child_table_num):
|
||||
tdSql.execute(f"create table {stbname}_{i} using {stbname} tags('beijing')")
|
||||
tdSql.execute(f"insert into {stbname}_{i}(ts) values(%d)" % (self.ts - 1-i))
|
||||
column_list = ['col1','col2','col3','col4','col5','col6','col7','col8']
|
||||
error_column_list = ['col11','col12','col13']
|
||||
error_param_list = [0,101]
|
||||
for i in [f'{stbname}', f'{dbname}.{stbname}']:
|
||||
for j in column_list:
|
||||
tdSql.query(f"select bottom({j},1) from {i}")
|
||||
tdSql.checkRows(0)
|
||||
tag_dict = {
|
||||
't0':'int'
|
||||
}
|
||||
tag_values = [
|
||||
f'1'
|
||||
]
|
||||
tdSql.execute(f"create database if not exists {self.dbname} vgroups 2")
|
||||
tdSql.execute(f'use {self.dbname}')
|
||||
tdSql.execute(self.setsql.set_create_stable_sql(stbname,self.column_dict,tag_dict))
|
||||
for i in range(self.tbnum):
|
||||
tdSql.execute(f"create table {stbname}_{i} using {stbname} tags({tag_values[0]})")
|
||||
tdSql.execute(self.insert_data(self.column_dict,f'{stbname}_{i}',self.rowNum))
|
||||
tdSql.query('show tables')
|
||||
vgroup_list = []
|
||||
for i in range(len(tdSql.queryResult)):
|
||||
vgroup_list.append(tdSql.queryResult[i][6])
|
||||
vgroup_list_set = set(vgroup_list)
|
||||
|
||||
for i in vgroup_list_set:
|
||||
vgroups_num = vgroup_list.count(i)
|
||||
if vgroups_num >=2:
|
||||
if vgroups_num >= 2:
|
||||
tdLog.info(f'This scene with {vgroups_num} vgroups is ok!')
|
||||
continue
|
||||
else:
|
||||
tdLog.exit(f'This scene does not meet the requirements with {vgroups_num} vgroup!\n')
|
||||
for i in range(self.rowNum):
|
||||
for j in range(child_table_num):
|
||||
tdSql.execute(f"insert into {stbname}_{j} values(%d, %d, %d, %d, %d, %d, %d, %d, %d, %f, %f, %d, '{self.binary_str}%d', '{self.nchar_str}%d')"
|
||||
% (self.ts + i, i + 1, i + 1, i + 1, i + 1, i + 1, i + 1, i + 1, i + 1, i + 0.1, i + 0.1, i % 2, i + 1, i + 1))
|
||||
for i in column_list:
|
||||
tdSql.query(f'select bottom({i},2) from {stbname}')
|
||||
tdSql.checkRows(2)
|
||||
tdSql.checkEqual(tdSql.queryResult,[(1,),(1,)])
|
||||
for j in error_param_list:
|
||||
tdSql.error(f'select bottom({i},{j}) from {stbname}')
|
||||
for i in error_column_list:
|
||||
tdSql.error(f'select bottom({i},10) from {stbname}')
|
||||
|
||||
tdSql.execute(f'drop database {dbname}')
|
||||
tdLog.exit(
|
||||
'This scene does not meet the requirements with {vgroups_num} vgroup!\n')
|
||||
for i in range(self.tbnum):
|
||||
self.bottom_check_data(f'{stbname}_{i}','child_table')
|
||||
self.bottom_check_data(f'{stbname}','stable')
|
||||
tdSql.execute(f'drop database {self.dbname}')
|
||||
|
||||
def run(self):
|
||||
|
||||
self.bottom_check_base()
|
||||
self.bottom_check_distribute()
|
||||
self.bottom_check_ntb()
|
||||
self.bottom_check_stb()
|
||||
|
||||
|
||||
def stop(self):
|
||||
tdSql.close()
|
||||
tdLog.success("%s successfully executed" % __file__)
|
||||
|
|
Loading…
Reference in New Issue