From 0c4c7853590b199d83b525ee9c9afbc916a45f6c Mon Sep 17 00:00:00 2001 From: jiacy-jcy Date: Fri, 17 Jun 2022 16:41:13 +0800 Subject: [PATCH] update --- tests/system-test/2-query/bottom.py | 4 +- tests/system-test/2-query/first.py | 3 +- tests/system-test/2-query/histogram.py | 69 +++++++++++++++++++++++++- tests/system-test/2-query/last.py | 62 ++++++++++++++--------- tests/system-test/2-query/top.py | 4 +- 5 files changed, 111 insertions(+), 31 deletions(-) diff --git a/tests/system-test/2-query/bottom.py b/tests/system-test/2-query/bottom.py index da609a54b2..6b7e6179c3 100644 --- a/tests/system-test/2-query/bottom.py +++ b/tests/system-test/2-query/bottom.py @@ -74,7 +74,7 @@ class TDTestCase: # prepare data for vgroup 4 dbname = self.get_long_name(length=10, mode="letters") stbname = self.get_long_name(length=5, mode="letters") - vgroup_num = 4 + vgroup_num = 2 child_table_num = 20 tdSql.execute(f"create database if not exists {dbname} vgroups {vgroup_num}") tdSql.execute(f'use {dbname}') @@ -103,7 +103,7 @@ class TDTestCase: 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') + 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')" diff --git a/tests/system-test/2-query/first.py b/tests/system-test/2-query/first.py index 25d561aa6b..8875bfe748 100644 --- a/tests/system-test/2-query/first.py +++ b/tests/system-test/2-query/first.py @@ -113,6 +113,7 @@ class TDTestCase: dbname = self.get_long_name(length=10, mode="letters") stbname = self.get_long_name(length=5, mode="letters") child_table_num = 20 + vgroup = 2 column_dict = { 'col1': 'tinyint', 'col2': 'smallint', @@ -128,7 +129,7 @@ class TDTestCase: 'col12': 'binary(20)', 'col13': 'nchar(20)' } - tdSql.execute(f"create database if not exists {dbname} vgroups 4") + tdSql.execute(f"create database if not exists {dbname} vgroups {vgroup}") 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, diff --git a/tests/system-test/2-query/histogram.py b/tests/system-test/2-query/histogram.py index 0448952be8..bc061f8fb7 100644 --- a/tests/system-test/2-query/histogram.py +++ b/tests/system-test/2-query/histogram.py @@ -44,8 +44,7 @@ class TDTestCase: buildPath = root[:len(root) - len("/build/bin")] break return buildPath - - def run(self): + def histogram_check_base(self): print("running {}".format(__file__)) tdSql.execute("drop database if exists db") tdSql.execute("create database if not exists db") @@ -3183,6 +3182,72 @@ class TDTestCase: tdSql.execute('drop database db') + + def histogram_check_distribute(self): + dbname = "db" + stbname = "stb" + row_num = 10 + child_table_num = 20 + vgroups = 2 + user_input_json = "[1,3,5,7]" + ts = 1537146000000 + binary_str = 'taosdata' + nchar_str = '涛思数据' + 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)' + } + tdSql.execute(f"create database if not exists {dbname} vgroups {vgroups}") + 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.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(f'This scene does not meet the requirements with {vgroups_num} vgroup!\n') + for i in range(child_table_num): + for j in range(row_num): + tdSql.execute(f"insert into {stbname}_{i} values(%d, %d, %d, %d, %d, %d, %d, %d, %d, %f, %f, %d, '{binary_str}%d', '{nchar_str}%d')" + % (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)) + # user_input + for k,v in column_dict.items(): + if v.lower() == 'tinyint' or v.lower() == 'smallint' or v.lower() == 'int' or v.lower() == 'bigint' or v.lower() =='float' or v.lower() =='double'\ + or v.lower() =='tinyint unsigned' or v.lower() =='smallint unsigned' or v.lower() =='int unsigned' or v.lower() =='bigint unsigned': + tdSql.query(f'select histogram({k}, "user_input", "{user_input_json}", 0) from {stbname}') + tdSql.checkRows(len(user_input_json[1:-1].split(','))-1) + elif 'binary' in v.lower() or 'nchar' in v.lower() or 'bool' == v.lower(): + tdSql.error(f'select histogram({k}, "user_input", "{user_input_json}", 0) from {stbname}') + + tdSql.execute(f'drop database {dbname}') + + + def run(self): + self.histogram_check_base() + self.histogram_check_distribute() + def stop(self): tdSql.close() tdLog.success("%s successfully executed" % __file__) diff --git a/tests/system-test/2-query/last.py b/tests/system-test/2-query/last.py index 805a15a005..d74f88745c 100644 --- a/tests/system-test/2-query/last.py +++ b/tests/system-test/2-query/last.py @@ -91,7 +91,7 @@ class TDTestCase: tdSql.query(f"select last({list(column_dict.keys())[0]}) from {stbname}_1 group by {list(column_dict.keys())[-1]}") tdSql.checkRows(1) 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')" + tdSql.execute(f"insert into {stbname}_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)) for i in [f'{stbname}_1', f'db.{stbname}_1', f'{stbname}', f'db.{stbname}']: tdSql.query(f"select last(*) from {i}") @@ -102,20 +102,20 @@ class TDTestCase: tdSql.query(f"select last({k}) from {j}") tdSql.checkRows(1) # tinyint,smallint,int,bigint,tinyint unsigned,smallint unsigned,int unsigned,bigint unsigned - if v == 'tinyint' or v == 'smallint' or v == 'int' or v == 'bigint' or v == 'tinyint unsigned' or v == 'smallint unsigned'\ - or v == 'int unsigned' or v == 'bigint unsigned': + if 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': tdSql.checkData(0, 0, 10) # float,double - elif v == 'float' or v == 'double': + elif v.lower() == 'float' or v.lower() == 'double': tdSql.checkData(0, 0, 9.1) # bool - elif v == 'bool': + elif v.lower() == 'bool': tdSql.checkData(0, 0, True) # binary - elif 'binary' in v: + elif 'binary' in v.lower(): tdSql.checkData(0, 0, f'{self.binary_str}{self.rowNum}') # nchar - elif 'nchar' in v: + elif 'nchar' in v.lower(): tdSql.checkData(0, 0, f'{self.nchar_str}{self.rowNum}') for i in [f'{stbname}_1', f'db.{stbname}_1', f'{stbname}', f'db.{stbname}']: tdSql.query(f"select last({list(column_dict.keys())[0]},{list(column_dict.keys())[1]},{list(column_dict.keys())[2]}) from {stbname}_1") @@ -170,20 +170,20 @@ class TDTestCase: tdSql.query(f"select last({k}) from {j}") tdSql.checkRows(1) # tinyint,smallint,int,bigint,tinyint unsigned,smallint unsigned,int unsigned,bigint unsigned - if v == 'tinyint' or v == 'smallint' or v == 'int' or v == 'bigint' or v == 'tinyint unsigned' or v == 'smallint unsigned'\ - or v == 'int unsigned' or v == 'bigint unsigned': + if 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': tdSql.checkData(0, 0, 10) # float,double - elif v == 'float' or v == 'double': + elif v.lower() == 'float' or v.lower() == 'double': tdSql.checkData(0, 0, 9.1) # bool - elif v == 'bool': + elif v.lower() == 'bool': tdSql.checkData(0, 0, True) # binary - elif 'binary' in v: + elif 'binary' in v.lower(): tdSql.checkData(0, 0, f'{self.binary_str}{self.rowNum}') # nchar - elif 'nchar' in v: + elif 'nchar' in v.lower(): tdSql.checkData(0, 0, f'{self.nchar_str}{self.rowNum}') tdSql.error( @@ -194,8 +194,21 @@ class TDTestCase: dbname = self.get_long_name(length=10, mode="letters") stbname = self.get_long_name(length=5, mode="letters") vgroup_num = 4 - column_list = ['col1', 'col2', 'col3', 'col4', 'col5', 'col6', - 'col7', 'col8', 'col9', 'col10', 'col11', 'col12', 'col13'] + column_dict = { + '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)' + } tdSql.execute( f"create database if not exists {dbname} vgroups {vgroup_num}") @@ -235,31 +248,32 @@ class TDTestCase: tdSql.query(f"select last(*) from {i}") tdSql.checkRows(1) tdSql.checkData(0, 1, 10) - for i in column_list: + for k, v in column_dict.items(): for j in [f'{stbname}', f'{dbname}.{stbname}']: - tdSql.query(f"select last({i}) from {j}") + tdSql.query(f"select last({k}) from {j}") tdSql.checkRows(1) # tinyint,smallint,int,bigint,tinyint unsigned,smallint unsigned,int unsigned,bigint unsigned - if i >= 1 and i < 9: + if 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': tdSql.checkData(0, 0, 10) # float,double - elif i >= 9 and i < 11: + elif v.lower() == 'float' or v.lower() == 'double': tdSql.checkData(0, 0, 9.1) # bool - elif i == 11: + elif v.lower() == 'bool': tdSql.checkData(0, 0, True) # binary - elif i == 12: + elif 'binary' in v.lower(): tdSql.checkData(0, 0, f'{self.binary_str}{self.rowNum}') # nchar - elif i == 13: + elif 'nchar' in v.lower(): tdSql.checkData(0, 0, f'{self.nchar_str}{self.rowNum}') tdSql.execute(f'drop database {dbname}') def run(self): self.last_check_stb_tb_base() - # self.last_check_ntb_base() - # self.last_check_stb_distribute() + self.last_check_ntb_base() + self.last_check_stb_distribute() def stop(self): tdSql.close() diff --git a/tests/system-test/2-query/top.py b/tests/system-test/2-query/top.py index 329b4b69e9..acd6bb12e9 100644 --- a/tests/system-test/2-query/top.py +++ b/tests/system-test/2-query/top.py @@ -71,7 +71,7 @@ class TDTestCase: # 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"create database if not exists {dbname} vgroups 2") 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, @@ -96,7 +96,7 @@ class TDTestCase: 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') + 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(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')"