To_unixtimestamp.py 5.1 KB
Newer Older
J
jiacy-jcy 已提交
1 2 3 4 5
from time import sleep

from util.log import *
from util.sql import *
from util.cases import *
J
update  
jiacy-jcy 已提交
6
from util.sqlset import TDSetSql
J
jiacy-jcy 已提交
7 8 9 10 11 12




class TDTestCase:

13
    def init(self, conn, logSql, replicaVar=1):
14
        self.replicaVar = int(replicaVar)
J
jiacy-jcy 已提交
15 16
        tdLog.debug(f"start to excute {__file__}")
        tdSql.init(conn.cursor())
J
update  
jiacy-jcy 已提交
17 18
        self.setsql = TDSetSql()
        self.dbname = 'db'
J
jiacy-jcy 已提交
19
        # name of normal table
J
update  
jiacy-jcy 已提交
20
        self.ntbname = f'{self.dbname}.ntb'
J
jiacy-jcy 已提交
21
        # name of stable
J
update  
jiacy-jcy 已提交
22
        self.stbname = f'{self.dbname}.stb'
J
jiacy-jcy 已提交
23
        # structure of column
G
Ganlin Zhao 已提交
24
        self.column_dict = {
J
jiacy-jcy 已提交
25 26 27
            'ts':'timestamp',
            'c1':'int',
            'c2':'float',
J
update  
jiacy-jcy 已提交
28
            'c3':'binary(20)'
G
Ganlin Zhao 已提交
29

J
jiacy-jcy 已提交
30 31
        }
        # structure of tag
G
Ganlin Zhao 已提交
32
        self.tag_dict = {
J
jiacy-jcy 已提交
33 34 35
            't0':'int'
        }
        # number of child tables
G
Ganlin Zhao 已提交
36
        self.tbnum = 2
J
jiacy-jcy 已提交
37
        # values of tag,the number of values should equal to tbnum
G
Ganlin Zhao 已提交
38
        self.tag_values = [
J
update  
jiacy-jcy 已提交
39 40
            '10',
            '100'
J
jiacy-jcy 已提交
41 42 43
        ]
        # values of rows, structure should be same as column
        self.values_list = [
J
update  
jiacy-jcy 已提交
44 45
            f'now,10,99.99,"abc"',
            f'today(),100,11.111,"abc"'
J
jiacy-jcy 已提交
46

J
jiacy-jcy 已提交
47
        ]
J
update  
jiacy-jcy 已提交
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
        self.error_param = [1,1.5,'now()']
    def data_check(self,tbname,values_list,tb_type,tb_num=1):
        for time in ['1970-01-01T08:00:00+0800','1970-01-01T08:00:00+08:00']:
            tdSql.query(f"select to_unixtimestamp('{time}') from {tbname}")
            if tb_type == 'ntb' or tb_type == 'ctb':
                tdSql.checkRows(len(values_list))
                for i in range(len(values_list)):
                    tdSql.checkEqual(tdSql.queryResult[i][0],0)
            elif tb_type == 'stb':
                tdSql.checkRows(len(self.values_list)*tb_num)
        for time in ['1900-01-01T08:00:00+08:00']:
            tdSql.query(f"select to_unixtimestamp('{time}') from {tbname}")
            if tb_type == 'ntb' or tb_type == 'ctb':
                tdSql.checkRows(len(values_list))
            elif tb_type == 'stb':
G
Ganlin Zhao 已提交
63
                tdSql.checkRows(len(self.values_list)*tb_num)
J
update  
jiacy-jcy 已提交
64 65 66 67 68 69 70 71 72 73 74 75 76
        for time in ['2020-01-32T08:00:00','2020-13-32T08:00:00','acd']:
            tdSql.query(f"select to_unixtimestamp('{time}') from {tbname}")
            if tb_type == 'ntb' or tb_type == 'ctb':
                tdSql.checkRows(len(values_list))
                for i in range(len(values_list)):
                    tdSql.checkEqual(tdSql.queryResult[i][0],None)
            elif tb_type == 'stb':
                tdSql.checkRows(len(values_list)*tb_num)
        for i in self.column_dict.keys():
            tdSql.query(f"select {i} from {tbname} where to_unixtimestamp('1970-01-01T08:00:00+08:00')=0")
            if tb_type == 'ntb' or tb_type == 'ctb':
                tdSql.checkRows(len(values_list))
            elif tb_type == 'stb':
G
Ganlin Zhao 已提交
77
                tdSql.checkRows(len(values_list)*tb_num)
J
update  
jiacy-jcy 已提交
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
        for time in self.error_param:
            tdSql.error(f"select to_unixtimestamp({time}) from {tbname}")
    def timestamp_change_check_ntb(self):
        tdSql.execute(f'create database {self.dbname}')
        tdSql.execute(self.setsql.set_create_normaltable_sql(self.ntbname,self.column_dict))
        for i in range(len(self.values_list)):
            tdSql.execute(f'insert into {self.ntbname} values({self.values_list[i]})')
        self.data_check(self.ntbname,self.values_list,'ntb')
        tdSql.execute(f'drop database {self.dbname}')
    def timestamp_change_check_stb(self):
        tdSql.execute(f'create database {self.dbname}')
        tdSql.execute(self.setsql.set_create_stable_sql(self.stbname,self.column_dict,self.tag_dict))
        for i in range(self.tbnum):
            tdSql.execute(f'create table {self.stbname}_{i} using {self.stbname} tags({self.tag_values[i]})')
            for j in range(len(self.values_list)):
                tdSql.execute(f'insert into {self.stbname}_{i} values({self.values_list[j]})')
        for i in range(self.tbnum):
            self.data_check(f'{self.stbname}_{i}',self.values_list,'ctb')
        self.data_check(self.stbname,self.values_list,'stb',self.tbnum)
        tdSql.execute(f'drop database {self.dbname}')
G
Ganlin Zhao 已提交
98 99 100
    def timestamp_change_return_type(self):
        tdSql.query(f"select to_unixtimestamp('1970-01-01 08:00:00+08:00', 0);")
        tdSql.checkEqual(tdSql.queryResult[0][0], 0)
G
Ganlin Zhao 已提交
101 102
        tdSql.query(f"select to_unixtimestamp('1970-01-01 00:00:00', 1);")
        tdSql.checkData(0, 0, '1970-01-01 00:00:00')
G
Ganlin Zhao 已提交
103 104 105 106 107
        tdSql.error(f"select to_unixtimestamp('1970-01-01 08:00:00+08:00', 2);")
        tdSql.error(f"select to_unixtimestamp('1970-01-01 08:00:00+08:00', 1.5);")
        tdSql.error(f"select to_unixtimestamp('1970-01-01 08:00:00+08:00', 'abc');")
        tdSql.error(f"select to_unixtimestamp('1970-01-01 08:00:00+08:00', true);")
        tdSql.error(f"select to_unixtimestamp('1970-01-01 08:00:00+08:00', 1, 3);")
J
jiacy-jcy 已提交
108
    def run(self):  # sourcery skip: extract-duplicate-method
J
update  
jiacy-jcy 已提交
109 110
        self.timestamp_change_check_ntb()
        self.timestamp_change_check_stb()
G
Ganlin Zhao 已提交
111
        self.timestamp_change_return_type()
J
jiacy-jcy 已提交
112 113 114 115 116
    def stop(self):
        tdSql.close()
        tdLog.success(f"{__file__} successfully executed")

tdCases.addLinux(__file__, TDTestCase())
G
Ganlin Zhao 已提交
117
tdCases.addWindows(__file__, TDTestCase())