add test case

This commit is contained in:
jiacy-jcy 2022-06-16 14:47:31 +08:00
parent e3c57c21ca
commit 3a6e6ee383
3 changed files with 83 additions and 15 deletions

View File

@ -27,6 +27,7 @@ class TDTestCase:
tdSql.init(conn.cursor()) tdSql.init(conn.cursor())
self.rowNum = 10 self.rowNum = 10
self.tbnum = 20
self.ts = 1537146000000 self.ts = 1537146000000
self.binary_str = 'taosdata' self.binary_str = 'taosdata'
self.nchar_str = '涛思数据' self.nchar_str = '涛思数据'
@ -91,7 +92,7 @@ class TDTestCase:
#!bug TD-16569 #!bug TD-16569
# tdSql.query("select first(*),last(*) from stb where ts < 23 interval(1s)") # tdSql.query("select first(*),last(*) from stb where ts < 23 interval(1s)")
# tdSql.checkRows(0) # tdSql.checkRows(0)
# tdSql.execute('drop database db') tdSql.execute('drop database db')
def first_check_stb_distribute(self): def first_check_stb_distribute(self):
# prepare data for vgroup 4 # prepare data for vgroup 4
dbname = self.get_long_name(length=10, mode="letters") dbname = self.get_long_name(length=10, mode="letters")
@ -104,10 +105,9 @@ class TDTestCase:
for i in range(1,21): for i in range(1,21):
tdSql.execute(f"create table {stbname}_{i} using {stbname} tags('beijing')") 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)) tdSql.execute(f"insert into {stbname}_{i}(ts) values(%d)" % (self.ts - 1-i))
# for i in [f'{stbname}', f'{dbname}.{stbname}']: for i in [f'{stbname}', f'{dbname}.{stbname}']:
# tdSql.query(f"select last(*) from {i}") tdSql.query(f"select first(*) from {i}")
# tdSql.checkRows(1) tdSql.checkRows(0)
# tdSql.checkData(0, 1, None)
tdSql.query('show tables') tdSql.query('show tables')
vgroup_list = [] vgroup_list = []
for i in range(len(tdSql.queryResult)): for i in range(len(tdSql.queryResult)):
@ -123,7 +123,7 @@ class TDTestCase:
else: else:
tdLog.exit('This scene does not meet the requirements with {vgroups_num} vgroup!\n') tdLog.exit('This scene does not meet the requirements with {vgroups_num} vgroup!\n')
for i in range(1,21): for i in range(self.tbnum):
for j in range(self.rowNum): for j in range(self.rowNum):
tdSql.execute(f"insert into {stbname}_{i} values(%d, %d, %d, %d, %d, %d, %d, %d, %d, %f, %f, %d, '{self.binary_str}%d', '{self.nchar_str}%d')" tdSql.execute(f"insert into {stbname}_{i} values(%d, %d, %d, %d, %d, %d, %d, %d, %d, %f, %f, %d, '{self.binary_str}%d', '{self.nchar_str}%d')"
% (self.ts + j + i, j + 1, j + 1, j + 1, j + 1, j + 1, j + 1, j + 1, j + 1, j + 0.1, j + 0.1, j % 2, j + 1, j + 1)) % (self.ts + j + i, j + 1, j + 1, j + 1, j + 1, j + 1, j + 1, j + 1, j + 1, j + 0.1, j + 0.1, j % 2, j + 1, j + 1))
@ -154,7 +154,7 @@ class TDTestCase:
#!bug TD-16569 #!bug TD-16569
# tdSql.query("select first(*),last(*) from {stbname} where ts < 23 interval(1s)") # tdSql.query("select first(*),last(*) from {stbname} where ts < 23 interval(1s)")
# tdSql.checkRows(0) # tdSql.checkRows(0)
# tdSql.execute('drop database db') tdSql.execute('drop database db')

View File

@ -12,6 +12,7 @@ class TDTestCase:
tdSql.init(conn.cursor()) tdSql.init(conn.cursor())
self.rowNum = 10 self.rowNum = 10
self.tbnum = 20
self.ts = 1537146000000 self.ts = 1537146000000
self.binary_str = 'taosdata' self.binary_str = 'taosdata'
self.nchar_str = '涛思数据' self.nchar_str = '涛思数据'
@ -78,6 +79,7 @@ class TDTestCase:
# nchar # nchar
elif i == 13: elif i == 13:
tdSql.checkData(0, 0, f'{self.nchar_str}{self.rowNum}') tdSql.checkData(0, 0, f'{self.nchar_str}{self.rowNum}')
for i in ['stb_1', 'db.stb_1', 'stb', 'db.stb']:
tdSql.query("select last(col1,col2,col3) from stb_1") tdSql.query("select last(col1,col2,col3) from stb_1")
tdSql.checkData(0, 2, 10) tdSql.checkData(0, 2, 10)
@ -140,7 +142,7 @@ class TDTestCase:
# build 20 child tables,every table insert 10 rows # 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, 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))''') 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(1,21): for i in range(self.tbnum):
tdSql.execute(f"create table {stbname}_{i} using {stbname} tags('beijing')") 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)) tdSql.execute(f"insert into {stbname}_{i}(ts) values(%d)" % (self.ts - 1-i))
# for i in [f'{stbname}', f'{dbname}.{stbname}']: # for i in [f'{stbname}', f'{dbname}.{stbname}']:
@ -152,8 +154,6 @@ class TDTestCase:
for i in range(len(tdSql.queryResult)): for i in range(len(tdSql.queryResult)):
vgroup_list.append(tdSql.queryResult[i][6]) vgroup_list.append(tdSql.queryResult[i][6])
vgroup_list_set = set(vgroup_list) vgroup_list_set = set(vgroup_list)
# print(vgroup_list_set)
# print(vgroup_list)
for i in vgroup_list_set: for i in vgroup_list_set:
vgroups_num = vgroup_list.count(i) vgroups_num = vgroup_list.count(i)
if vgroups_num >=2: if vgroups_num >=2:
@ -162,7 +162,7 @@ class TDTestCase:
else: else:
tdLog.exit('This scene does not meet the requirements with {vgroups_num} vgroup!\n') tdLog.exit('This scene does not meet the requirements with {vgroups_num} vgroup!\n')
for i in range(1,21): for i in range(self.tbnum):
for j in range(self.rowNum): for j in range(self.rowNum):
tdSql.execute(f"insert into {stbname}_{i} values(%d, %d, %d, %d, %d, %d, %d, %d, %d, %f, %f, %d, '{self.binary_str}%d', '{self.nchar_str}%d')" tdSql.execute(f"insert into {stbname}_{i} values(%d, %d, %d, %d, %d, %d, %d, %d, %d, %f, %f, %d, '{self.binary_str}%d', '{self.nchar_str}%d')"
% (self.ts + j + i, j + 1, j + 1, j + 1, j + 1, j + 1, j + 1, j + 1, j + 1, j + 0.1, j + 0.1, j % 2, j + 1, j + 1)) % (self.ts + j + i, j + 1, j + 1, j + 1, j + 1, j + 1, j + 1, j + 1, j + 1, j + 0.1, j + 0.1, j % 2, j + 1, j + 1))

View File

@ -11,6 +11,8 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import random
import string
from util.log import * from util.log import *
from util.cases import * from util.cases import *
from util.sql import * from util.sql import *
@ -22,9 +24,24 @@ class TDTestCase:
tdSql.init(conn.cursor()) tdSql.init(conn.cursor())
self.rowNum = 10 self.rowNum = 10
self.tbnum = 20
self.ts = 1537146000000 self.ts = 1537146000000
self.binary_str = 'taosdata' self.binary_str = 'taosdata'
self.nchar_str = '涛思数据' self.nchar_str = '涛思数据'
def get_long_name(self, length, mode="mixed"):
"""
generate long name
mode could be numbers/letters/letters_mixed/mixed
"""
if mode == "numbers":
population = string.digits
elif mode == "letters":
population = string.ascii_letters.lower()
elif mode == "letters_mixed":
population = string.ascii_letters.upper() + string.ascii_letters.lower()
else:
population = string.ascii_letters.lower() + string.digits
return "".join(random.choices(population, k=length))
def top_check_base(self): def top_check_base(self):
tdSql.prepare() tdSql.prepare()
tdSql.execute('''create table stb(ts timestamp, col1 tinyint, col2 smallint, col3 int, col4 bigint, col5 tinyint unsigned, col6 smallint unsigned, tdSql.execute('''create table stb(ts timestamp, col1 tinyint, col2 smallint, col3 int, col4 bigint, col5 tinyint unsigned, col6 smallint unsigned,
@ -48,11 +65,62 @@ class TDTestCase:
tdSql.checkRows(2) tdSql.checkRows(2)
tdSql.query('select top(col2,1) from stb_1 interval(1y) order by col2') tdSql.query('select top(col2,1) from stb_1 interval(1y) order by col2')
tdSql.checkData(0,0,10) tdSql.checkData(0,0,10)
tdSql.error("select * from test where bottom(col2,1)=1") tdSql.error("select * from stb_1 where top(col2,1)=1")
tdSql.error("select top(col14, 0) from test;") tdSql.execute('drop database db')
def top_check_stb_distribute(self):
# prepare data for vgroup 4
dbname = self.get_long_name(length=10, mode="letters")
stbname = self.get_long_name(length=5, mode="letters")
tdSql.execute(f"create database if not exists {dbname} vgroups 4")
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(self.tbnum):
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']
for i in [f'{stbname}', f'{dbname}.{stbname}']:
for j in column_list:
tdSql.query(f"select top({j},1) from {i}")
tdSql.checkRows(0)
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:
tdLog.info(f'This scene with {vgroups_num} vgroups is ok!')
continue
else:
tdLog.exit('This scene does not meet the requirements with {vgroups_num} vgroup!\n')
for i in range(self.rowNum):
for j in range(self.tbnum):
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))
error_column_list = ['col11','col12','col13']
error_param_list = [0,101]
for i in column_list:
tdSql.query(f'select top({i},2) from {stbname}')
tdSql.checkRows(2)
tdSql.checkEqual(tdSql.queryResult,[(10,),(10,)])
for j in error_param_list:
tdSql.error(f'select top({i},{j}) from {stbname}')
for i in error_column_list:
tdSql.error(f'select top({i},10) from {stbname}')
tdSql.query(f"select ts,top(col1, 2),ts from {stbname} group by tbname")
tdSql.checkRows(2*self.tbnum)
tdSql.query(f'select top(col2,1) from {stbname} interval(1y) order by col2')
tdSql.checkData(0,0,10)
tdSql.error(f"select * from {stbname} where top(col2,1)=1")
def run(self): def run(self):
self.top_check_base() self.top_check_base()
self.top_check_stb_distribute()
def stop(self): def stop(self):
tdSql.close() tdSql.close()
tdLog.success("%s successfully executed" % __file__) tdLog.success("%s successfully executed" % __file__)