385 lines
13 KiB
Python
385 lines
13 KiB
Python
###################################################################
|
|
# Copyright (c) 2016 by TAOS Technologies, Inc.
|
|
# All rights reserved.
|
|
#
|
|
# 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
|
|
#
|
|
###################################################################
|
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
import sys
|
|
from util.log import *
|
|
from util.cases import *
|
|
from util.sql import *
|
|
from util.dnodes import *
|
|
import time
|
|
|
|
|
|
class TDTestCase:
|
|
def init(self, conn, logSql):
|
|
tdLog.debug("start to execute %s" % __file__)
|
|
tdSql.init(conn.cursor(), logSql)
|
|
|
|
|
|
def restart_taosd(self,db):
|
|
tdDnodes.stop(1)
|
|
tdDnodes.startWithoutSleep(1)
|
|
tdSql.execute("use %s;" % db)
|
|
|
|
def date_to_timestamp_microseconds(self, date):
|
|
datetime_obj = datetime.strptime(date, "%Y-%m-%d %H:%M:%S.%f")
|
|
obj_stamp = int(time.mktime(datetime_obj.timetuple()) * 1000.0 + datetime_obj.microsecond / 1000.0)
|
|
return obj_stamp
|
|
|
|
def timestamp_microseconds_to_date(self, timestamp):
|
|
d = datetime.datetime.fromtimestamp(timestamp/1000)
|
|
str1 = d.strftime("%Y-%m-%d %H:%M:%S.%f")
|
|
return str1
|
|
|
|
|
|
|
|
def run(self):
|
|
print("==========step1")
|
|
print("create table && insert data")
|
|
sql = 'reset query cache'
|
|
tdSql.execute(sql)
|
|
sql = 'drop database if exists db'
|
|
tdSql.execute(sql)
|
|
sql = 'create database db update 0 days 30;'
|
|
tdSql.execute(sql)
|
|
sql = 'use db;'
|
|
tdSql.execute(sql)
|
|
tdSql.execute('create table t1 (ts timestamp, a int)')
|
|
|
|
|
|
print("==================================1 start")
|
|
insert_rows = 200
|
|
t0 = 1603152000000
|
|
tdLog.info("insert %d rows" % insert_rows)
|
|
for i in range(insert_rows):
|
|
tdSql.execute('insert into t1 values (%d , 1)' %(t0+i))
|
|
print("==========step2")
|
|
print("restart to commit ")
|
|
self.restart_taosd('db')
|
|
|
|
print('check query result after restart')
|
|
tdSql.query('select * from db.t1;')
|
|
for i in range(insert_rows):
|
|
tdSql.checkData(i, 1, 1)
|
|
|
|
print("==========step3")
|
|
print('insert data')
|
|
for i in range(insert_rows):
|
|
tdSql.execute('insert into t1 values (%d , 1)' %(t0+i+5000))
|
|
print('check query result before restart')
|
|
tdSql.query('select * from db.t1;')
|
|
for i in range(insert_rows, insert_rows*2):
|
|
tdSql.checkData(i, 1, 1)
|
|
|
|
self.restart_taosd('db')
|
|
print('check query result after restart')
|
|
tdSql.query('select * from db.t1;')
|
|
for i in range(insert_rows, insert_rows*2):
|
|
tdSql.checkData(i, 1, 1)
|
|
|
|
print("==========step4")
|
|
print('insert data')
|
|
for i in range(insert_rows):
|
|
tdSql.execute('insert into t1 values (%d , 2)' %(t0+i))
|
|
for i in range(insert_rows):
|
|
tdSql.execute('insert into t1 values (%d , 1)' %(t0+i+5000))
|
|
|
|
print('check query result before restart')
|
|
tdSql.query('select * from db.t1;')
|
|
print(tdSql.queryResult)
|
|
for i in range(insert_rows):
|
|
tdSql.checkData(i, 1, 1)
|
|
for i in range(insert_rows, insert_rows*2):
|
|
tdSql.checkData(i, 1, 1)
|
|
|
|
print('check query result after restart')
|
|
self.restart_taosd('db')
|
|
tdSql.query('select * from db.t1;')
|
|
# print(tdSql.queryResult)
|
|
for i in range(insert_rows):
|
|
tdSql.checkData(i, 1, 1)
|
|
for i in range(insert_rows, insert_rows*2):
|
|
tdSql.checkData(i, 1, 1)
|
|
|
|
print("==================================2 start")
|
|
print("==========step1")
|
|
print("create table && insert data")
|
|
tdSql.execute('create table t2 (ts timestamp, a int)')
|
|
insert_rows = 200
|
|
t0 = 1603152000000
|
|
tdLog.info("insert %d rows" % insert_rows)
|
|
for i in range(insert_rows):
|
|
tdSql.execute('insert into t2 values (%d , 1)' %(t0+i))
|
|
print('restart to commit')
|
|
self.restart_taosd('db')
|
|
for i in range(insert_rows):
|
|
tdSql.execute('insert into t2 values (%d , 1)' %(t0+i+5000))
|
|
print('restart to commit')
|
|
self.restart_taosd('db')
|
|
|
|
for k in range(10):
|
|
for i in range(10):
|
|
tdSql.execute('insert into t2 values (%d , 1)' %(t0 + 200 + k * 10 + i))
|
|
# print('insert into t2 values (%d , 1)' %(t0 + 200 + k * 10 + i))
|
|
|
|
|
|
print("==========step2")
|
|
print('check query result before restart')
|
|
tdSql.query('select * from db.t2;')
|
|
for i in range(insert_rows*2+100):
|
|
tdSql.checkData(i, 1, 1)
|
|
# print(tdSql.queryResult)
|
|
print('restart to commit')
|
|
self.restart_taosd('db')
|
|
print('check query result after restart')
|
|
tdSql.query('select * from db.t2;')
|
|
for i in range(insert_rows*2+100):
|
|
tdSql.checkData(i, 1, 1)
|
|
|
|
|
|
print("==================================3 start")
|
|
print("==========step1")
|
|
print("create table && insert data")
|
|
tdSql.execute('create table t3 (ts timestamp, a int)')
|
|
insert_rows = 200
|
|
t0 = 1603152000000
|
|
tdLog.info("insert %d rows" % insert_rows)
|
|
for i in range(insert_rows):
|
|
tdSql.execute('insert into t3 values (%d , 1)' %(t0+i))
|
|
print('restart to commit')
|
|
self.restart_taosd('db')
|
|
|
|
for i in range(insert_rows):
|
|
tdSql.execute('insert into t3 values (%d , 1)' %(t0+i+5000))
|
|
print('restart to commit')
|
|
self.restart_taosd('db')
|
|
|
|
for i in range(5200):
|
|
tdSql.execute('insert into t3 values (%d , 2)' %(t0+i))
|
|
|
|
print("==========step2")
|
|
print('check query result before restart')
|
|
tdSql.query('select * from db.t3;')
|
|
for i in range(200):
|
|
tdSql.checkData(i, 1, 1)
|
|
for i in range(200, 5000):
|
|
tdSql.checkData(i, 1, 2)
|
|
for i in range(5000, 5200):
|
|
tdSql.checkData(i, 1, 1)
|
|
# print(tdSql.queryResult)
|
|
print('restart to commit')
|
|
self.restart_taosd('db')
|
|
print('check query result after restart')
|
|
tdSql.query('select * from db.t3;')
|
|
for i in range(200):
|
|
tdSql.checkData(i, 1, 1)
|
|
for i in range(200, 5000):
|
|
tdSql.checkData(i, 1, 2)
|
|
for i in range(5000, 5200):
|
|
tdSql.checkData(i, 1, 1)
|
|
|
|
print("==================================4 start")
|
|
print("==========step1")
|
|
print("create table && insert data")
|
|
tdSql.execute('create table t4 (ts timestamp, a int)')
|
|
insert_rows = 200
|
|
t0 = 1603152000000
|
|
tdLog.info("insert %d rows" % insert_rows)
|
|
for i in range(insert_rows):
|
|
tdSql.execute('insert into t4 values (%d , 1)' %(t0+i))
|
|
print('restart to commit')
|
|
self.restart_taosd('db')
|
|
|
|
for i in range(insert_rows):
|
|
tdSql.execute('insert into t4 values (%d , 1)' %(t0+i+5000))
|
|
print('restart to commit')
|
|
self.restart_taosd('db')
|
|
|
|
for i in range(100):
|
|
tdSql.execute('insert into t4 values (%d , 2)' %(t0+i))
|
|
|
|
for i in range(200, 5000):
|
|
tdSql.execute('insert into t4 values (%d , 2)' %(t0+i))
|
|
|
|
for i in range(100):
|
|
tdSql.execute('insert into t4 values (%d , 1)' %(t0+i+5000))
|
|
|
|
print('check query result before restart')
|
|
tdSql.query('select * from db.t4;')
|
|
for i in range(200):
|
|
tdSql.checkData(i, 1, 1)
|
|
for i in range(200, 5000):
|
|
tdSql.checkData(i, 1, 2)
|
|
for i in range(5000, 5200):
|
|
tdSql.checkData(i, 1, 1)
|
|
|
|
print('check query result after restart')
|
|
self.restart_taosd('db')
|
|
tdSql.query('select * from db.t4;')
|
|
for i in range(200):
|
|
tdSql.checkData(i, 1, 1)
|
|
for i in range(200, 5000):
|
|
tdSql.checkData(i, 1, 2)
|
|
for i in range(5000, 5200):
|
|
tdSql.checkData(i, 1, 1)
|
|
#
|
|
print("==================================5 start")
|
|
print("==========step1")
|
|
print("create table && insert data")
|
|
tdSql.execute('create table t5 (ts timestamp, a int)')
|
|
insert_rows = 200
|
|
t0 = 1603152000000
|
|
tdLog.info("insert %d rows" % insert_rows)
|
|
for i in range(insert_rows):
|
|
tdSql.execute('insert into t5 values (%d , 1)' %(t0+i))
|
|
print('restart to commit')
|
|
self.restart_taosd('db')
|
|
|
|
for i in range(insert_rows):
|
|
tdSql.execute('insert into t5 values (%d , 1)' %(t0+i+5000))
|
|
print('restart to commit')
|
|
self.restart_taosd('db')
|
|
|
|
for i in range(100, 200):
|
|
tdSql.execute('insert into t5 values (%d , 2)' %(t0+i))
|
|
|
|
for i in range(200, 5000):
|
|
tdSql.execute('insert into t5 values (%d , 2)' %(t0+i))
|
|
|
|
for i in range(100, 200):
|
|
tdSql.execute('insert into t5 values (%d , 2)' %(t0+i+5000))
|
|
|
|
print('check query result before restart')
|
|
tdSql.query('select * from db.t5;')
|
|
for i in range(200):
|
|
tdSql.checkData(i, 1, 1)
|
|
for i in range(200, 5000):
|
|
tdSql.checkData(i, 1, 2)
|
|
for i in range(5000, 5200):
|
|
tdSql.checkData(i, 1, 1)
|
|
|
|
print('check query result after restart')
|
|
self.restart_taosd('db')
|
|
tdSql.query('select * from db.t5;')
|
|
for i in range(200):
|
|
tdSql.checkData(i, 1, 1)
|
|
for i in range(200, 5000):
|
|
tdSql.checkData(i, 1, 2)
|
|
for i in range(5000, 5200):
|
|
tdSql.checkData(i, 1, 1)
|
|
|
|
print("==================================6 start")
|
|
print("==========step1")
|
|
print("create table && insert data")
|
|
tdSql.execute('create table t6 (ts timestamp, a int)')
|
|
insert_rows = 200
|
|
t0 = 1603152000000
|
|
tdLog.info("insert %d rows" % insert_rows)
|
|
for i in range(insert_rows):
|
|
tdSql.execute('insert into t6 values (%d , 1)' %(t0+i))
|
|
print('restart to commit')
|
|
self.restart_taosd('db')
|
|
|
|
for i in range(insert_rows):
|
|
tdSql.execute('insert into t6 values (%d , 1)' %(t0+i+5000))
|
|
print('restart to commit')
|
|
self.restart_taosd('db')
|
|
|
|
for i in range(-1000, 10000):
|
|
tdSql.execute('insert into t6 values (%d , 2)' %(t0+i))
|
|
|
|
print('check query result before restart')
|
|
tdSql.query('select * from db.t6;')
|
|
tdSql.checkRows(11000)
|
|
for i in range(1000):
|
|
tdSql.checkData(i, 1, 2)
|
|
for i in range(1000,1200):
|
|
tdSql.checkData(i, 1, 1)
|
|
for i in range(1200,6000):
|
|
tdSql.checkData(i, 1, 2)
|
|
for i in range(6000,6200):
|
|
tdSql.checkData(i, 1, 1)
|
|
for i in range(6200, 11000):
|
|
tdSql.checkData(i, 1, 2)
|
|
|
|
print('check query result after restart')
|
|
self.restart_taosd('db')
|
|
tdSql.query('select * from db.t6;')
|
|
tdSql.checkRows(11000)
|
|
for i in range(1000):
|
|
tdSql.checkData(i, 1, 2)
|
|
for i in range(1000,1200):
|
|
tdSql.checkData(i, 1, 1)
|
|
for i in range(1200,6000):
|
|
tdSql.checkData(i, 1, 2)
|
|
for i in range(6000,6200):
|
|
tdSql.checkData(i, 1, 1)
|
|
for i in range(6200, 11000):
|
|
tdSql.checkData(i, 1, 2)
|
|
|
|
|
|
print("==================================7 start")
|
|
print("==========step1")
|
|
print("create table && insert data")
|
|
tdSql.execute('create table t7 (ts timestamp, a int)')
|
|
insert_rows = 200
|
|
t0 = 1603152000000
|
|
tdLog.info("insert %d rows" % insert_rows)
|
|
for i in range(insert_rows):
|
|
tdSql.execute('insert into t7 values (%d , 1)' %(t0+i))
|
|
|
|
for i in range(insert_rows):
|
|
tdSql.execute('insert into t7 values (%d , 1)' %(t0+i+5000))
|
|
print('restart to commit')
|
|
self.restart_taosd('db')
|
|
|
|
for i in range(-1000, 10000):
|
|
tdSql.execute('insert into t7 values (%d , 2)' %(t0+i))
|
|
|
|
print('check query result before restart')
|
|
tdSql.query('select * from db.t7;')
|
|
tdSql.checkRows(11000)
|
|
for i in range(1000):
|
|
tdSql.checkData(i, 1, 2)
|
|
for i in range(1000,1200):
|
|
tdSql.checkData(i, 1, 1)
|
|
for i in range(1200,6000):
|
|
tdSql.checkData(i, 1, 2)
|
|
for i in range(6000,6200):
|
|
tdSql.checkData(i, 1, 1)
|
|
for i in range(6200, 11000):
|
|
tdSql.checkData(i, 1, 2)
|
|
|
|
print('check query result after restart')
|
|
self.restart_taosd('db')
|
|
tdSql.query('select * from db.t7;')
|
|
tdSql.checkRows(11000)
|
|
for i in range(1000):
|
|
tdSql.checkData(i, 1, 2)
|
|
for i in range(1000,1200):
|
|
tdSql.checkData(i, 1, 1)
|
|
for i in range(1200,6000):
|
|
tdSql.checkData(i, 1, 2)
|
|
for i in range(6000,6200):
|
|
tdSql.checkData(i, 1, 1)
|
|
for i in range(6200, 11000):
|
|
tdSql.checkData(i, 1, 2)
|
|
|
|
|
|
def stop(self):
|
|
tdSql.close()
|
|
tdLog.success("%s successfully executed" % __file__)
|
|
|
|
|
|
tdCases.addWindows(__file__, TDTestCase())
|
|
tdCases.addLinux(__file__, TDTestCase())
|