107 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			107 lines
		
	
	
		
			4.8 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
 | 
						|
import os
 | 
						|
import taos
 | 
						|
from util.log import tdLog
 | 
						|
from util.cases import tdCases
 | 
						|
from util.sql import tdSql
 | 
						|
from util.dnodes import tdDnodes
 | 
						|
import random
 | 
						|
 | 
						|
class TDTestCase:
 | 
						|
    def init(self, conn, logSql):
 | 
						|
        tdLog.debug("start to execute %s" % __file__)
 | 
						|
        tdSql.init(conn.cursor(), logSql)
 | 
						|
 | 
						|
        self.ts1 = 1593548685000    
 | 
						|
        self.ts2 = 1593548785000    
 | 
						|
 | 
						|
 | 
						|
    def run(self):
 | 
						|
        # tdSql.execute("drop database db ")
 | 
						|
        tdSql.prepare()
 | 
						|
        tdSql.execute("create table st (ts timestamp, num int,  value int , t_instance int) tags (loc nchar(30))")
 | 
						|
        node = 5
 | 
						|
        number = 10
 | 
						|
        for n in range(node):
 | 
						|
            for m in range(number):
 | 
						|
                dt= m*300000+n*60000  # collecting'frequency is 10s 
 | 
						|
                args1=(n,n,self.ts1+dt,n,100+2*m+2*n,10+m+n)
 | 
						|
                # args2=(n,self.ts2+dt,n,120+n,15+n)
 | 
						|
                tdSql.execute("insert into t%d using st tags('beijing%d')  values(%d, %d, %d, %d)" % args1)
 | 
						|
                # tdSql.execute("insert into t1 using st tags('shanghai') values(%d, %d, %d, %d)" % args2)             
 | 
						|
                
 | 
						|
        # interval function
 | 
						|
        tdSql.query("select avg(value) from st interval(10m)")
 | 
						|
        # print(tdSql.queryResult)
 | 
						|
        tdSql.checkRows(6)        
 | 
						|
        tdSql.checkData(0, 0, "2020-07-01 04:20:00")
 | 
						|
        tdSql.checkData(1, 1, 107.4)
 | 
						|
       
 | 
						|
        # subquery with interval
 | 
						|
        tdSql.query("select avg(avg_val) from(select avg(value) as avg_val from st where loc='beijing0' interval(10m));")
 | 
						|
        tdSql.checkData(0, 0, 109.0)
 | 
						|
 | 
						|
        # subquery with interval and select two Column in parent query
 | 
						|
        tdSql.error("select ts,avg(avg_val) from(select avg(value) as avg_val from st where loc='beijing0' interval(10m));")
 | 
						|
 | 
						|
        # subquery with interval and sliding 
 | 
						|
        tdSql.query("select avg(value) as avg_val from st where loc='beijing0' interval(8m) sliding(30s) limit 1;")   
 | 
						|
        tdSql.checkData(0, 0, "2020-07-01 04:17:00")
 | 
						|
        tdSql.checkData(0, 1, 100) 
 | 
						|
        tdSql.query("select avg(avg_val) from(select avg(value) as avg_val from st where loc='beijing1' interval(8m) sliding(30s));")
 | 
						|
        tdSql.checkData(0, 0, 111)
 | 
						|
        
 | 
						|
        # subquery with interval and offset
 | 
						|
        tdSql.query("select avg(value) as avg_val from st where loc='beijing0' interval(5m,1m);")
 | 
						|
        tdSql.checkData(0, 0, "2020-07-01 04:21:00")
 | 
						|
        tdSql.checkData(0, 1, 100)
 | 
						|
        tdSql.query("select avg(avg_val) from(select avg(value) as avg_val from st where loc='beijing0' interval(5m,1m) group by loc);")
 | 
						|
        tdSql.checkData(0, 0, 109)
 | 
						|
 | 
						|
        # subquery  with interval,sliding and group by ; parent query with interval
 | 
						|
        tdSql.query("select avg(value) as avg_val from st where loc='beijing0' interval(8m) sliding(1m) group by loc limit 1 offset 52 ;")
 | 
						|
        tdSql.checkData(0, 0, "2020-07-01 05:09:00")
 | 
						|
        tdSql.checkData(0, 1, 118)
 | 
						|
        tdSql.query("select avg(avg_val) as ncst from(select avg(value) as avg_val from st where loc!='beijing0' interval(8m) sliding(1m)  group by loc )  interval(5m);")
 | 
						|
        tdSql.checkData(1, 1, 105)
 | 
						|
 | 
						|
        # #  subquery and parent query with interval and sliding 
 | 
						|
        tdSql.query("select avg(avg_val) from(select avg(value) as avg_val from st where loc='beijing1' interval(8m) sliding(5m)) interval(10m) sliding(2m);")
 | 
						|
        tdSql.checkData(29, 0, "2020-07-01 05:10:00.000")
 | 
						|
 | 
						|
        # subquery and parent query with top and bottom
 | 
						|
        tdSql.query("select top(avg_val,2) from(select avg(value) as avg_val,num from st where loc!='beijing0' group by num) order by avg_val desc;")
 | 
						|
        tdSql.checkData(0, 1, 117)
 | 
						|
        tdSql.query("select bottom(avg_val,3) from(select avg(value) as avg_val,num from st where loc!='beijing0' group by num) order by avg_val asc;")
 | 
						|
        tdSql.checkData(0, 1, 111)
 | 
						|
 | 
						|
        # 
 | 
						|
        tdSql.query("select top(avg_val,2) from(select avg(value) as avg_val from st where loc='beijing1' interval(8m) sliding(3m));")
 | 
						|
        tdSql.checkData(0, 1, 120)
 | 
						|
 | 
						|
        # clear env
 | 
						|
        testcaseFilename = os.path.split(__file__)[-1]
 | 
						|
        os.system("rm -rf ./insert_res.txt")
 | 
						|
        os.system("rm -rf wal/%s.sql" % testcaseFilename )     
 | 
						|
 | 
						|
    def stop(self):
 | 
						|
        tdSql.close()
 | 
						|
        tdLog.success("%s successfully executed" % __file__)
 | 
						|
 | 
						|
 | 
						|
tdCases.addWindows(__file__, TDTestCase())
 | 
						|
tdCases.addLinux(__file__, TDTestCase())
 |