homework-jianmu/tests/army/query/function/test_function.py

172 lines
5.2 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 time
import random
import taos
import frame
import frame.etool
from frame.log import *
from frame.cases import *
from frame.sql import *
from frame.caseBase import *
from frame import *
class TDTestCase(TBase):
updatecfgDict = {
"keepColumnName" : "1",
"ttlChangeOnWrite" : "1",
"querySmaOptimize" : "1",
"slowLogScope" : "none",
"queryBufferSize" : 10240
}
def insertData(self):
tdLog.info(f"insert data.")
# taosBenchmark run
datafile = etool.curFile(__file__, "data/d1001.data")
tdSql.execute("create database ts_4893;")
tdSql.execute(f"use ts_4893;")
tdSql.execute("select database();")
tdSql.execute("CREATE STABLE `meters` (`ts` TIMESTAMP, `current` FLOAT, `voltage` INT, `phase` FLOAT, "
"`id` INT, `name` VARCHAR(64), `nch1` NCHAR(50), `nch2` NCHAR(50), `var1` VARCHAR(50), "
"`var2` VARCHAR(50)) TAGS (`groupid` TINYINT, `location` VARCHAR(16));")
tdSql.execute("CREATE table d0 using meters tags(1, 'beijing')")
tdSql.execute("insert into d0 file '%s'" % datafile)
def test_normal_query(self, testCase):
# read sql from .sql file and execute
tdLog.info(f"test normal query.")
sqlFile = etool.curFile(__file__, f"in/{testCase}.in")
ansFile = etool.curFile(__file__, f"ans/{testCase}.csv")
with open(sqlFile, 'r') as sql_file:
sql_statement = ''
tdSql.csvLine = 0
for line in sql_file:
if not line.strip() or line.strip().startswith('--'):
continue
sql_statement += line.strip()
if sql_statement.endswith(';'):
# 去掉末尾的分号
sql_statement = sql_statement.rstrip(';')
tdSql.checkDataCsvByLine(sql_statement, ansFile)
# 清空 sql_statement 以便处理下一条语句
sql_statement = ''
def test_pi(self):
self.test_normal_query("pi")
def test_round(self):
self.test_normal_query("round")
def test_exp(self):
self.test_normal_query("exp")
def test_trunc(self):
self.test_normal_query("trunc")
def test_ln(self):
self.test_normal_query("ln")
def test_mod(self):
self.test_normal_query("mod")
def test_sign(self):
self.test_normal_query("sign")
def test_degrees(self):
self.test_normal_query("degrees")
def test_radians(self):
self.test_normal_query("radians")
def test_char_length(self):
self.test_normal_query("char_length")
def test_char(self):
self.test_normal_query("char")
def test_ascii(self):
self.test_normal_query("ascii")
def test_position(self):
self.test_normal_query("position")
def test_replace(self):
self.test_normal_query("replace")
def test_repeat(self):
self.test_normal_query("repeat")
def test_substr(self):
self.test_normal_query("substr")
def test_substr_idx(self):
self.test_normal_query("substr_idx")
def test_trim(self):
self.test_normal_query("trim")
def test_timediff(self):
self.test_normal_query("timediff")
def test_week(self):
self.test_normal_query("week")
def test_weekday(self):
self.test_normal_query("weekday")
def test_weekofyear(self):
self.test_normal_query("weekofyear")
def test_dayofweek(self):
self.test_normal_query("dayofweek")
def test_stddev(self):
self.test_normal_query("stddev")
def test_varpop(self):
self.test_normal_query("varpop")
# run
def run(self):
tdLog.debug(f"start to excute {__file__}")
# insert data
self.insertData()
# math function
self.test_pi()
self.test_round()
self.test_exp()
self.test_trunc()
self.test_ln()
self.test_mod()
self.test_sign()
self.test_degrees()
self.test_radians()
# char function
self.test_char_length()
self.test_char()
self.test_ascii()
self.test_position()
self.test_replace()
self.test_repeat()
self.test_substr()
self.test_substr_idx()
self.test_trim()
# time function
self.test_timediff()
self.test_week()
self.test_weekday()
self.test_weekofyear()
self.test_dayofweek()
# agg function
self.test_stddev()
self.test_varpop()
tdLog.success(f"{__file__} successfully executed")
tdCases.addLinux(__file__, TDTestCase())
tdCases.addWindows(__file__, TDTestCase())