fix case
This commit is contained in:
parent
beea5581db
commit
f000a2df96
|
@ -25,6 +25,9 @@ TAOS_BIN_TYPE = [
|
||||||
"MEDIUMBLOB", "BLOB", # add in 3.x
|
"MEDIUMBLOB", "BLOB", # add in 3.x
|
||||||
]
|
]
|
||||||
|
|
||||||
|
TAOS_TIME_INIT = ["b", "u", "a", "s", "m", "h", "d", "w", "n", "y"]
|
||||||
|
TAOS_PRECISION = ["ms", "us", "ns"]
|
||||||
|
|
||||||
# basic data type boundary
|
# basic data type boundary
|
||||||
TINYINT_MAX = 127
|
TINYINT_MAX = 127
|
||||||
TINYINT_MIN = -128
|
TINYINT_MIN = -128
|
||||||
|
@ -108,7 +111,13 @@ TIME_Y = 365 * TIME_D
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# streams and related agg-function
|
# streams and related agg-function
|
||||||
SMA_INDEX_FUNCTIONS = ["MIN", "MAX"]
|
SMA_INDEX_FUNCTIONS = ["MIN", "MAX"]
|
||||||
ROLLUP_FUNCTIONS = ["AVG", "SUM", "MIN", "MAX", "LAST", "FIRST"]
|
ROLLUP_FUNCTIONS = ["AVG", "SUM", "MIN", "MAX", "LAST", "FIRST"]
|
||||||
SMA_WATMARK_MAXDELAY_INIT = ['a', "s", "m"]
|
SMA_WATMARK_MAXDELAY_INIT = ['a', "s", "m"]
|
||||||
|
WATERMARK_MAX = 900000
|
||||||
|
WATERMARK_MIN = 0
|
||||||
|
|
||||||
|
MAX_DELAY_MAX = 900000
|
||||||
|
MAX_DELAY_MIN = 1
|
|
@ -21,6 +21,7 @@ import psutil
|
||||||
import shutil
|
import shutil
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
from util.log import *
|
from util.log import *
|
||||||
|
from util.constant import *
|
||||||
|
|
||||||
def _parse_datetime(timestr):
|
def _parse_datetime(timestr):
|
||||||
try:
|
try:
|
||||||
|
@ -301,6 +302,41 @@ class TDSql:
|
||||||
args = (caller.filename, caller.lineno, self.sql, elm, expect_elm)
|
args = (caller.filename, caller.lineno, self.sql, elm, expect_elm)
|
||||||
tdLog.exit("%s(%d) failed: sql:%s, elm:%s == expect_elm:%s" % args)
|
tdLog.exit("%s(%d) failed: sql:%s, elm:%s == expect_elm:%s" % args)
|
||||||
|
|
||||||
|
def get_times(self, time_str, precision="ms"):
|
||||||
|
caller = inspect.getframeinfo(inspect.stack()[1][0])
|
||||||
|
if time_str[-1] not in TAOS_TIME_INIT:
|
||||||
|
tdLog.exit(f"{caller.filename}({caller.lineno}) failed: {time_str} not a standard taos time init")
|
||||||
|
if precision not in TAOS_PRECISION:
|
||||||
|
tdLog.exit(f"{caller.filename}({caller.lineno}) failed: {precision} not a standard taos time precision")
|
||||||
|
|
||||||
|
if time_str[-1] == TAOS_TIME_INIT[0]:
|
||||||
|
times = int(time_str[:-1]) * TIME_NS
|
||||||
|
if time_str[-1] == TAOS_TIME_INIT[1]:
|
||||||
|
times = int(time_str[:-1]) * TIME_US
|
||||||
|
if time_str[-1] == TAOS_TIME_INIT[2]:
|
||||||
|
times = int(time_str[:-1]) * TIME_MS
|
||||||
|
if time_str[-1] == TAOS_TIME_INIT[3]:
|
||||||
|
times = int(time_str[:-1]) * TIME_S
|
||||||
|
if time_str[-1] == TAOS_TIME_INIT[4]:
|
||||||
|
times = int(time_str[:-1]) * TIME_M
|
||||||
|
if time_str[-1] == TAOS_TIME_INIT[5]:
|
||||||
|
times = int(time_str[:-1]) * TIME_H
|
||||||
|
if time_str[-1] == TAOS_TIME_INIT[6]:
|
||||||
|
times = int(time_str[:-1]) * TIME_D
|
||||||
|
if time_str[-1] == TAOS_TIME_INIT[7]:
|
||||||
|
times = int(time_str[:-1]) * TIME_W
|
||||||
|
if time_str[-1] == TAOS_TIME_INIT[8]:
|
||||||
|
times = int(time_str[:-1]) * TIME_N
|
||||||
|
if time_str[-1] == TAOS_TIME_INIT[9]:
|
||||||
|
times = int(time_str[:-1]) * TIME_Y
|
||||||
|
|
||||||
|
if precision == "ms":
|
||||||
|
return int(times)
|
||||||
|
elif precision == "us":
|
||||||
|
return int(times*1000)
|
||||||
|
elif precision == "ns":
|
||||||
|
return int(times*1000*1000)
|
||||||
|
|
||||||
def taosdStatus(self, state):
|
def taosdStatus(self, state):
|
||||||
tdLog.sleep(5)
|
tdLog.sleep(5)
|
||||||
pstate = 0
|
pstate = 0
|
||||||
|
|
|
@ -7,8 +7,6 @@ from util.sql import *
|
||||||
from util.cases import *
|
from util.cases import *
|
||||||
from util.dnodes import *
|
from util.dnodes import *
|
||||||
from util.constant import *
|
from util.constant import *
|
||||||
# from ...pytest.util.sql import *
|
|
||||||
# from ...pytest.util.constant import *
|
|
||||||
|
|
||||||
PRIMARY_COL = "ts"
|
PRIMARY_COL = "ts"
|
||||||
|
|
||||||
|
@ -144,12 +142,16 @@ class SMAschema:
|
||||||
del self.other[k]
|
del self.other[k]
|
||||||
|
|
||||||
|
|
||||||
|
from ...pytest.util.sql import *
|
||||||
|
from ...pytest.util.constant import *
|
||||||
|
|
||||||
class TDTestCase:
|
class TDTestCase:
|
||||||
updatecfgDict = {"querySmaOptimize": 1}
|
updatecfgDict = {"querySmaOptimize": 1}
|
||||||
|
|
||||||
def init(self, conn, logSql):
|
def init(self, conn, logSql):
|
||||||
tdLog.debug(f"start to excute {__file__}")
|
tdLog.debug(f"start to excute {__file__}")
|
||||||
tdSql.init(conn.cursor(), False)
|
tdSql.init(conn.cursor(), False)
|
||||||
|
self.precision = "ms"
|
||||||
|
|
||||||
"""
|
"""
|
||||||
create sma index :
|
create sma index :
|
||||||
|
@ -210,14 +212,43 @@ class TDTestCase:
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def __check_sma_watermark_max_dealy(self, arg):
|
def __check_sma_watermark(self, arg):
|
||||||
if not isinstance(arg, str):
|
if not isinstance(arg, str):
|
||||||
return False
|
return False
|
||||||
if arg[-1] not in SMA_WATMARK_MAXDELAY_INIT:
|
if arg[-1] not in SMA_WATMARK_MAXDELAY_INIT:
|
||||||
return False
|
return False
|
||||||
|
if len(arg) == 1:
|
||||||
|
return False
|
||||||
|
if not arg[:-1].isdecimal():
|
||||||
|
return False
|
||||||
|
if tdSql.get_times(arg) > WATERMARK_MAX:
|
||||||
|
return False
|
||||||
|
if tdSql.get_times(arg) < WATERMARK_MIN:
|
||||||
|
return False
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
|
def __check_sma_max_delay(self, arg):
|
||||||
|
self.__check_sma_watermark(arg)
|
||||||
|
if tdSql.get_times(arg) < MAX_DELAY_MIN:
|
||||||
|
return False
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
|
def __check_sliding(self, arg):
|
||||||
|
if not isinstance(arg, str):
|
||||||
|
return False
|
||||||
|
if arg[-1] not in TAOS_TIME_INIT:
|
||||||
|
return False
|
||||||
|
if len(arg) == 1:
|
||||||
|
return False
|
||||||
|
if not arg[:-1].isdecimal():
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
def __check_interval(self, arg):
|
||||||
|
if not isinstance(arg, tuple):
|
||||||
|
return False
|
||||||
|
|
||||||
def __sma_create_check(self, sma:SMAschema):
|
def __sma_create_check(self, sma:SMAschema):
|
||||||
if self.updatecfgDict["querySmaOptimize"] == 0:
|
if self.updatecfgDict["querySmaOptimize"] == 0:
|
||||||
|
@ -245,9 +276,9 @@ class TDTestCase:
|
||||||
return False
|
return False
|
||||||
if not sma.sliding :
|
if not sma.sliding :
|
||||||
return False
|
return False
|
||||||
if not sma.watermark:
|
if not sma.watermark or not self.__check_sma_watermark(sma.watermark):
|
||||||
return False
|
return False
|
||||||
if not sma.max_delay:
|
if not sma.max_delay or not self.__check_sma_max_delay(sma.max_delay):
|
||||||
return False
|
return False
|
||||||
if sma.other:
|
if sma.other:
|
||||||
return False
|
return False
|
||||||
|
@ -263,22 +294,24 @@ class TDTestCase:
|
||||||
cur_sqls = []
|
cur_sqls = []
|
||||||
# err_set
|
# err_set
|
||||||
# # case 1: required fields check
|
# # case 1: required fields check
|
||||||
err_sqls.append( SMAschema(creation="", tbname=STBNAME, func=(f"min({INT_COL})",f"max({INT_COL})") ) )
|
# err_sqls.append( SMAschema(creation="", tbname=STBNAME, func=(f"min({INT_COL})",f"max({INT_COL})") ) )
|
||||||
err_sqls.append( SMAschema(index_name="",tbname=STBNAME, func=(f"min({INT_COL})",f"max({INT_COL})") ) )
|
# err_sqls.append( SMAschema(index_name="",tbname=STBNAME, func=(f"min({INT_COL})",f"max({INT_COL})") ) )
|
||||||
err_sqls.append( SMAschema(index_flag="",tbname=STBNAME, func=(f"min({INT_COL})",f"max({INT_COL})") ) )
|
# err_sqls.append( SMAschema(index_flag="",tbname=STBNAME, func=(f"min({INT_COL})",f"max({INT_COL})") ) )
|
||||||
err_sqls.append( SMAschema(operator="",tbname=STBNAME, func=(f"min({INT_COL})",f"max({INT_COL})") ) )
|
# err_sqls.append( SMAschema(operator="",tbname=STBNAME, func=(f"min({INT_COL})",f"max({INT_COL})") ) )
|
||||||
err_sqls.append( SMAschema(tbname="", func=(f"min({INT_COL})",f"max({INT_COL})") ) )
|
# err_sqls.append( SMAschema(tbname="", func=(f"min({INT_COL})",f"max({INT_COL})") ) )
|
||||||
err_sqls.append( SMAschema(func="",tbname=STBNAME ) )
|
# err_sqls.append( SMAschema(func="",tbname=STBNAME ) )
|
||||||
err_sqls.append( SMAschema(interval="",tbname=STBNAME, func=(f"min({INT_COL})",f"max({INT_COL})") ) )
|
# err_sqls.append( SMAschema(interval="",tbname=STBNAME, func=(f"min({INT_COL})",f"max({INT_COL})") ) )
|
||||||
err_sqls.append( SMAschema(sliding="",tbname=STBNAME, func=(f"min({INT_COL})",f"max({INT_COL})") ) )
|
# err_sqls.append( SMAschema(sliding="",tbname=STBNAME, func=(f"min({INT_COL})",f"max({INT_COL})") ) )
|
||||||
err_sqls.append( SMAschema(max_delay="",tbname=STBNAME, func=(f"min({INT_COL})",f"max({INT_COL})") ) )
|
# err_sqls.append( SMAschema(max_delay="",tbname=STBNAME, func=(f"min({INT_COL})",f"max({INT_COL})") ) )
|
||||||
err_sqls.append( SMAschema(watermark="",tbname=STBNAME, func=(f"min({INT_COL})",f"max({INT_COL})") ) )
|
err_sqls.append( SMAschema(watermark="",tbname=STBNAME, func=(f"min({INT_COL})",f"max({INT_COL})") ) )
|
||||||
|
|
||||||
return err_sqls, cur_sqls
|
return err_sqls, cur_sqls
|
||||||
|
|
||||||
|
|
||||||
def test_create_sma(self):
|
def test_create_sma(self):
|
||||||
err_sqls , cur_sqls = self.__create_sma_sql
|
err_sqls , cur_sqls = self.__create_sma_sql
|
||||||
for err_sql in err_sqls:
|
for err_sql in err_sqls:
|
||||||
|
print(type(err_sql.watermark))
|
||||||
self.sma_create_check(err_sql)
|
self.sma_create_check(err_sql)
|
||||||
|
|
||||||
def all_test(self):
|
def all_test(self):
|
||||||
|
|
Loading…
Reference in New Issue