nanoSecondCheck.py 9.4 KB
Newer Older
1
# #################################################################
B
bryanchang0603 已提交
2 3
#           Copyright (c) 2016 by TAOS Technologies, Inc.
#                     All rights reserved.
4

B
bryanchang0603 已提交
5 6 7 8
#  This file is proprietary and confidential to TAOS Technologies.
#  No part of this file may be reproduced, stored, transmitted,
#  disclosed or used in any form or by any means other than as
#  expressly provided by the written permission from Jianhui Tao
9 10

# #################################################################
B
bryanchang0603 已提交
11 12 13

# -*- coding: utf-8 -*-

14
# TODO: after TD-4518 and TD-4510 is resolved, add the exception test case for these situations
B
bryanchang0603 已提交
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34

import sys
from util.log import *
from util.cases import *
from util.sql import *
import time
from datetime import datetime
import os


class TDTestCase:
    def init(self, conn, logSql):
        tdLog.debug("start to execute %s" % __file__)
        tdSql.init(conn.cursor(), logSql)

    def run(self):
        tdSql.prepare()

        tdSql.execute('reset query cache')
        tdSql.execute('drop database if exists db')
B
bryanchang0603 已提交
35 36
        tdSql.execute('create database db precision "ns";')
        tdSql.query('show databases;')
B
bryanchang0603 已提交
37 38 39
        tdSql.checkData(0,16,'ns')
        tdSql.execute('use db')
        tdSql.execute('create table tb (ts timestamp, speed int)')
B
bryanchang0603 已提交
40 41 42 43 44
        tdSql.execute('insert into tb values(\'2021-06-10 0:00:00.100000001\', 1);')
        tdSql.execute('insert into tb values(1623254400150000000, 2);')
        tdSql.execute('import into tb values(1623254400300000000, 3);')
        tdSql.execute('import into tb values(1623254400299999999, 4);')
        tdSql.execute('insert into tb values(1623254400300000001, 5);')
45 46
        # os.system('sudo timedatectl set-ntp off')
        # os.system('sudo timedatectl set-time 2021-06-10')
B
bryanchang0603 已提交
47
        tdSql.execute('insert into tb values(1623254400999999999, 7);')
B
bryanchang0603 已提交
48

B
bryanchang0603 已提交
49

50 51
        #TODO: after the connector is updated, run the following commented code
        #TODO: due to the precision limit of double, spread currently cannot be tested since ns timestampe cannot be accurately represented
B
bryanchang0603 已提交
52
        # tdSql.query('select * from tb;')
53 54 55 56 57 58
        # tdSql.checkData(0,0,'2021-06-10 0:00:00.100000001')
        # tdSql.checkData(1,0,'2021-06-10 0:00:00.150000000')
        # tdSql.checkData(2,0,'2021-06-10 0:00:00.299999999')
        # tdSql.checkData(3,1,3)
        # tdSql.checkData(4,1,5)
        # tdSql.checkData(5,1,7)
B
bryanchang0603 已提交
59 60
        # tdSql.checkRows(6)
        # tdSql.query('select count(*) from tb where ts > 1623254400100000000 and ts < 1623254400100000002;')
B
bryanchang0603 已提交
61
        # tdSql.checkData(0,0,1)
B
bryanchang0603 已提交
62
        # tdSql.query('select count(*) from tb where ts > \'2021-06-10 0:00:00.100000001\' and ts < \'2021-06-10 0:00:00.160000000\';')
B
bryanchang0603 已提交
63 64
        # tdSql.checkData(0,0,1)

B
bryanchang0603 已提交
65
        # tdSql.query('select count(*) from tb where ts > 1623254400100000000 and ts < 1623254400150000000;')
B
bryanchang0603 已提交
66
        # tdSql.checkData(0,0,1)
B
bryanchang0603 已提交
67
        # tdSql.query('select count(*) from tb where ts > \'2021-06-10 0:00:00.100000000\' and ts < \'2021-06-10 0:00:00.150000000\';')
B
bryanchang0603 已提交
68 69
        # tdSql.checkData(0,0,1)

B
bryanchang0603 已提交
70 71 72
        # tdSql.query('select count(*) from tb where ts > 1623254400400000000;')
        # tdSql.checkData(0,0,1)
        # tdSql.query('select count(*) from tb where ts < \'2021-06-10 00:00:00.400000000\';')
B
bryanchang0603 已提交
73
        # tdSql.checkData(0,0,5)
B
bryanchang0603 已提交
74

B
bryanchang0603 已提交
75 76 77 78
        # # os.system('sudo timedatectl set-ntp off')
        # # os.system('sudo timedatectl set-time 2021-06-10')
        # tdSql.query('select count(*) from tb where ts > now + 400000000b;')
        # tdSql.checkData(0,0,0)
B
bryanchang0603 已提交
79

B
bryanchang0603 已提交
80 81
        # tdSql.query('select count(*) from tb where ts >= \'2021-06-10 0:00:00.100000001\';')
        # tdSql.checkData(0,0,6)
B
bryanchang0603 已提交
82

B
bryanchang0603 已提交
83
        # tdSql.query('select count(*) from tb where ts <= 1623254400300000000;')
B
bryanchang0603 已提交
84
        # tdSql.checkData(0,0,4)
B
bryanchang0603 已提交
85

B
bryanchang0603 已提交
86
        # tdSql.query('select count(*) from tb where ts = \'2021-06-10 0:00:00.000000000\';')
B
bryanchang0603 已提交
87 88
        # tdSql.checkData(0,0,0)

B
bryanchang0603 已提交
89 90 91 92 93 94 95
        # tdSql.query('select count(*) from tb where ts = 1623254400150000000;')
        # tdSql.checkData(0,0,1)

        # tdSql.query('select count(*) from tb where ts = \'2021-06-10 0:00:00.100000001\';')
        # tdSql.checkData(0,0,1)

        # tdSql.query('select count(*) from tb where ts between 1623254400000000000 and 1623254400400000000;')
B
bryanchang0603 已提交
96 97
        # tdSql.checkData(0,0,5)

B
bryanchang0603 已提交
98
        # tdSql.query('select count(*) from tb where ts between \'2021-06-10 0:00:00.299999999\' and \'2021-06-10 0:00:00.300000001\';')
B
bryanchang0603 已提交
99 100
        # tdSql.checkData(0,0,3)

101
        # tdSql.query('select avg(speed) from tb interval(5000000000b);')
B
bryanchang0603 已提交
102 103
        # tdSql.checkRows(1)

104 105
        # tdSql.query('select avg(speed) from tb interval(100000000b)')
        # tdSql.checkRows(4)
B
bryanchang0603 已提交
106

107 108
        # tdSql.query('select avg(speed) from tb interval(100000000b) sliding (100000000b);')
        # tdSql.checkRows(4)
B
bryanchang0603 已提交
109

110 111 112
        # tdSql.query('select last(*) from tb')
        # tdSql.checkData(0,0, '2021-06-10 0:00:00.999999999')
        # tdSql.checkData(0,0, 1623254400999999999)
B
bryanchang0603 已提交
113

114 115 116
        # tdSql.query('select first(*) from tb')
        # tdSql.checkData(0,0, 1623254400100000001)
        # tdSql.checkData(0,0, '2021-06-10 0:00:00.100000001')
B
bryanchang0603 已提交
117

118
        # tdSql.execute('insert into tb values(now + 500000000b, 6);')
B
bryanchang0603 已提交
119 120 121 122 123 124 125 126 127
        # tdSql.query('select * from tb;')
        # tdSql.checkRows(7)

        tdSql.execute('create table tb2 (ts timestamp, speed int, ts2 timestamp);')
        tdSql.execute('insert into tb2 values(\'2021-06-10 0:00:00.100000001\', 1, \'2021-06-11 0:00:00.100000001\');')
        tdSql.execute('insert into tb2 values(1623254400150000000, 2, 1623340800150000000);')
        tdSql.execute('import into tb2 values(1623254400300000000, 3, 1623340800300000000);')
        tdSql.execute('import into tb2 values(1623254400299999999, 4, 1623340800299999999);')
        tdSql.execute('insert into tb2 values(1623254400300000001, 5, 1623340800300000001);')
128 129
        # os.system('sudo timedatectl set-ntp off')
        # os.system('sudo timedatectl set-time 2021-06-10')
B
bryanchang0603 已提交
130 131 132
        tdSql.execute('insert into tb2 values(1623254400999999999, 7, 1623513600999999999);')

        # tdSql.query('select * from tb2;')
133 134 135 136 137 138
        # tdSql.checkData(0,0,'2021-06-10 0:00:00.100000001')
        # tdSql.checkData(1,0,'2021-06-10 0:00:00.150000000')
        # tdSql.checkData(2,1,4)
        # tdSql.checkData(3,1,3)
        # tdSql.checkData(4,2,'2021-06-11 00:00:00.300000001')
        # tdSql.checkData(5,2,'2021-06-13 00:00:00.999999999')
B
bryanchang0603 已提交
139 140
        # tdSql.checkRows(6)
        # tdSql.query('select count(*) from tb2 where ts2 > 1623340800000000000 and ts2 < 1623340800150000000;')
B
bryanchang0603 已提交
141
        # tdSql.checkData(0,0,1)
B
bryanchang0603 已提交
142
        # tdSql.query('select count(*) from tb2 where ts2 > \'2021-06-11 0:00:00.100000000\' and ts2 < \'2021-06-11 0:00:00.100000002\';')
B
bryanchang0603 已提交
143 144
        # tdSql.checkData(0,0,1)

B
bryanchang0603 已提交
145 146 147
        # tdSql.query('select count(*) from tb2 where ts2 > 1623340800500000000;')
        # tdSql.checkData(0,0,1)
        # tdSql.query('select count(*) from tb2 where ts2 < \'2021-06-11 0:00:00.400000000\';')
B
bryanchang0603 已提交
148
        # tdSql.checkData(0,0,5)
B
bryanchang0603 已提交
149

B
bryanchang0603 已提交
150 151 152 153
        # # os.system('sudo timedatectl set-ntp off')
        # # os.system('sudo timedatectl set-time 2021-06-11')
        # tdSql.query('select count(*) from tb2 where ts2 > now + 400000000b;')
        # tdSql.checkData(0,0,0)
B
bryanchang0603 已提交
154 155


B
bryanchang0603 已提交
156 157
        # tdSql.query('select count(*) from tb2 where ts2 >= \'2021-06-11 0:00:00.100000001\';')
        # tdSql.checkData(0,0,6)
B
bryanchang0603 已提交
158

B
bryanchang0603 已提交
159
        # tdSql.query('select count(*) from tb2 where ts2 <= 1623340800400000000;')
B
bryanchang0603 已提交
160 161
        # tdSql.checkData(0,0,5)

B
bryanchang0603 已提交
162 163 164 165 166 167 168
        # tdSql.query('select count(*) from tb2 where ts2 = \'2021-06-11 0:00:00.000000000\';')
        # tdSql.checkData(0,0,0)

        # tdSql.query('select count(*) from tb2 where ts2 = \'2021-06-11 0:00:00.300000001\';')
        # tdSql.checkData(0,0,1)

        # tdSql.query('select count(*) from tb2 where ts2 = 1623340800300000001;')
169
        # tdSql.checkData(0,0,1)
B
bryanchang0603 已提交
170

B
bryanchang0603 已提交
171
        # tdSql.query('select count(*) from tb2 where ts2 between 1623340800000000000 and 1623340800450000000;')
B
bryanchang0603 已提交
172 173
        # tdSql.checkData(0,0,5)

B
bryanchang0603 已提交
174
        # tdSql.query('select count(*) from tb2 where ts2 between \'2021-06-11 0:00:00.299999999\' and \'2021-06-11 0:00:00.300000001\';')
B
bryanchang0603 已提交
175 176
        # tdSql.checkData(0,0,3)

B
bryanchang0603 已提交
177 178
        # tdSql.query('select count(*) from tb2 where ts2 <> 1623513600999999999;')
        # tdSql.checkData(0,0,5)
B
bryanchang0603 已提交
179

B
bryanchang0603 已提交
180 181
        # tdSql.query('select count(*) from tb2 where ts2 <> \'2021-06-11 0:00:00.100000001\';')
        # tdSql.checkData(0,0,5)
B
bryanchang0603 已提交
182

B
bryanchang0603 已提交
183 184
        # tdSql.query('select count(*) from tb2 where ts2 != 1623513600999999999;')
        # tdSql.checkData(0,0,5)
B
bryanchang0603 已提交
185

B
bryanchang0603 已提交
186 187 188 189 190 191
        # tdSql.query('select count(*) from tb2 where ts2 != \'2021-06-11 0:00:00.100000001\';')
        # tdSql.checkData(0,0,5)

        # tdSql.execute('insert into tb2 values(now + 500000000b, 6, now +2d);')
        # tdSql.query('select * from tb2;')
        # tdSql.checkRows(7)
B
bryanchang0603 已提交
192

193
        # tdSql.execute('create table tb3 (ts timestamp, speed int);')
194

195 196
        # tdSql.error('insert into tb3 values(16232544001500000, 2);')
        # tdSql.execute('insert into tb3 values(\'2021-06-10 0:00:00.123456\', 2);')
B
bryanchang0603 已提交
197
        # tdSql.query('select * from tb3 where ts = \'2021-06-10 0:00:00.123456000\';')
198 199
        # tdSql.checkRows(1)

200
        # tdSql.execute('insert into tb3 values(\'2021-06-10 0:00:00.123456789000\', 2);')
B
bryanchang0603 已提交
201
        # tdSql.query('select * from tb3 where ts = \'2021-06-10 0:00:00.123456789\';')
202 203
        # tdSql.checkRows(1)

B
bryanchang0603 已提交
204 205
        os.system('sudo timedatectl set-ntp on')

B
bryanchang0603 已提交
206 207 208 209 210 211 212
    def stop(self):
        tdSql.close()
        tdLog.success("%s successfully executed" % __file__)


tdCases.addWindows(__file__, TDTestCase())
tdCases.addLinux(__file__, TDTestCase())