Merge pull request #14394 from taosdata/cpwu/3.0
test: fix the case and test-framework
This commit is contained in:
commit
ef58c6094c
|
@ -17,6 +17,7 @@ import string
|
||||||
import requests
|
import requests
|
||||||
import time
|
import time
|
||||||
import socket
|
import socket
|
||||||
|
import json
|
||||||
from .boundary import DataBoundary
|
from .boundary import DataBoundary
|
||||||
import taos
|
import taos
|
||||||
from util.log import *
|
from util.log import *
|
||||||
|
@ -651,4 +652,16 @@ class TDCom:
|
||||||
return res_list
|
return res_list
|
||||||
else:
|
else:
|
||||||
tdLog.exit(f"getOneRow out of range: row_index={location} row_count={self.query_row}")
|
tdLog.exit(f"getOneRow out of range: row_index={location} row_count={self.query_row}")
|
||||||
|
|
||||||
|
|
||||||
|
def is_json(msg):
|
||||||
|
if isinstance(msg, str):
|
||||||
|
try:
|
||||||
|
json.loads(msg)
|
||||||
|
return True
|
||||||
|
except:
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
|
||||||
tdCom = TDCom()
|
tdCom = TDCom()
|
||||||
|
|
|
@ -71,6 +71,34 @@ TAOS_KEYWORDS = [
|
||||||
"COPY", "IF", "NOW", "STABLES", "WHERE",
|
"COPY", "IF", "NOW", "STABLES", "WHERE",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
NUM_FUNC = [
|
||||||
|
"ABS", "ACOS", "ASIN", "ATAN", "CEIL", "COS", "FLOOR", "LOG", "POW", "ROUND", "SIN", "SQRT", "TAN",
|
||||||
|
]
|
||||||
|
|
||||||
|
STR_FUNC = [
|
||||||
|
"CHAR_LENGTH", "CONCAT", "CONCAT_WS", "LENGTH", "LOWER","LTRIM", "RTRIM", "SUBSTR", "UPPER",
|
||||||
|
]
|
||||||
|
|
||||||
|
CONVER_FUNC = ["CASR", "TO_ISO8601", "TO_JSON", "TP_UNIXTIMESTAMP"]
|
||||||
|
|
||||||
|
SELECT_FUNC = [
|
||||||
|
"APERCENTILE", "BOTTOM", "FIRST", "INTERP", "LAST", "MAX", "MIN", "PERCENTILE", "TAIL", "TOP", "UNIQUE",
|
||||||
|
]
|
||||||
|
|
||||||
|
AGG_FUNC = [
|
||||||
|
"AVG", "COUNT", "ELAPSED", "LEASTSQUARES", "MODE", "SPREAD", "STDDEV", "SUM", "HYPERLOGLOG", "HISTOGRAM",
|
||||||
|
]
|
||||||
|
|
||||||
|
TS_FUNC = [
|
||||||
|
"CSUM", "DERIVATIVE", "DIFF", "IRATE", "MAVG", "SAMPLE", "STATECOUNT", "STATEDURATION", "TWA"
|
||||||
|
]
|
||||||
|
|
||||||
|
SYSINFO_FUCN = [
|
||||||
|
"DATABASE", "CLIENT_VERSION", "SERVER_VERSION", "SERVER_STATUS", "CURRENT_USER", "USER"
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# basic data type boundary
|
# basic data type boundary
|
||||||
TINYINT_MAX = 127
|
TINYINT_MAX = 127
|
||||||
TINYINT_MIN = -128
|
TINYINT_MIN = -128
|
||||||
|
@ -84,16 +112,16 @@ SMALLINT_MIN = -32768
|
||||||
SMALLINT_UN_MAX = 65535
|
SMALLINT_UN_MAX = 65535
|
||||||
SMALLINT_UN_MIN = 0
|
SMALLINT_UN_MIN = 0
|
||||||
|
|
||||||
INT_MAX = 2147483647
|
INT_MAX = 2_147_483_647
|
||||||
INT_MIN = -2147483648
|
INT_MIN = -2_147_483_648
|
||||||
|
|
||||||
INT_UN_MAX = 4294967295
|
INT_UN_MAX = 4_294_967_295
|
||||||
INT_UN_MIN = 0
|
INT_UN_MIN = 0
|
||||||
|
|
||||||
BIGINT_MAX = 9223372036854775807
|
BIGINT_MAX = 9_223_372_036_854_775_807
|
||||||
BIGINT_MIN = -9223372036854775808
|
BIGINT_MIN = -9_223_372_036_854_775_808
|
||||||
|
|
||||||
BIGINT_UN_MAX = 18446744073709551615
|
BIGINT_UN_MAX = 18_446_744_073_709_551_615
|
||||||
BIGINT_UN_MIN = 0
|
BIGINT_UN_MIN = 0
|
||||||
|
|
||||||
FLOAT_MAX = 3.40E+38
|
FLOAT_MAX = 3.40E+38
|
||||||
|
@ -131,13 +159,13 @@ COL_COUNT_MIN = 2
|
||||||
TAG_COL_COUNT_MAX = 4096
|
TAG_COL_COUNT_MAX = 4096
|
||||||
TAG_COL_COUNT_MIN = 3
|
TAG_COL_COUNT_MIN = 3
|
||||||
|
|
||||||
MNODE_SHM_SIZE_MAX = 2147483647
|
MNODE_SHM_SIZE_MAX = 2_147_483_647
|
||||||
MNODE_SHM_SIZE_MIN = 6292480
|
MNODE_SHM_SIZE_MIN = 6_292_480
|
||||||
MNODE_SHM_SIZE_DEFAULT = 6292480
|
MNODE_SHM_SIZE_DEFAULT = 6_292_480
|
||||||
|
|
||||||
VNODE_SHM_SIZE_MAX = 2147483647
|
VNODE_SHM_SIZE_MAX = 2_147_483_647
|
||||||
VNODE_SHM_SIZE_MIN = 6292480
|
VNODE_SHM_SIZE_MIN = 6_292_480
|
||||||
VNODE_SHM_SIZE_DEFAULT = 31458304
|
VNODE_SHM_SIZE_DEFAULT = 31_458_304
|
||||||
|
|
||||||
# time_init
|
# time_init
|
||||||
TIME_MS = 1
|
TIME_MS = 1
|
||||||
|
@ -160,6 +188,7 @@ INTERVAL_MIN = 1 * TIME_MS if PRECISION == PRECISION_DEFAULT else 1 * TIME_US
|
||||||
# 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"]
|
||||||
|
BLOCK_FUNCTIONS = ["SUM", "MIN", "MAX"]
|
||||||
SMA_WATMARK_MAXDELAY_INIT = ['a', "s", "m"]
|
SMA_WATMARK_MAXDELAY_INIT = ['a', "s", "m"]
|
||||||
WATERMARK_MAX = 900000
|
WATERMARK_MAX = 900000
|
||||||
WATERMARK_MIN = 0
|
WATERMARK_MIN = 0
|
||||||
|
|
|
@ -96,6 +96,15 @@ class TDSql:
|
||||||
return self.queryResult
|
return self.queryResult
|
||||||
return self.queryRows
|
return self.queryRows
|
||||||
|
|
||||||
|
def is_err_sql(self, sql):
|
||||||
|
err_flag = True
|
||||||
|
try:
|
||||||
|
self.cursor.execute(sql)
|
||||||
|
except BaseException:
|
||||||
|
err_flag = False
|
||||||
|
|
||||||
|
return False if err_flag else True
|
||||||
|
|
||||||
def getVariable(self, search_attr):
|
def getVariable(self, search_attr):
|
||||||
'''
|
'''
|
||||||
get variable of search_attr access "show variables"
|
get variable of search_attr access "show variables"
|
||||||
|
@ -249,7 +258,6 @@ class TDSql:
|
||||||
raise Exception(repr(e))
|
raise Exception(repr(e))
|
||||||
return self.queryResult
|
return self.queryResult
|
||||||
|
|
||||||
|
|
||||||
def executeTimes(self, sql, times):
|
def executeTimes(self, sql, times):
|
||||||
for i in range(times):
|
for i in range(times):
|
||||||
try:
|
try:
|
||||||
|
@ -336,6 +344,38 @@ class TDSql:
|
||||||
elif precision == "ns":
|
elif precision == "ns":
|
||||||
return int(times*1000*1000)
|
return int(times*1000*1000)
|
||||||
|
|
||||||
|
def get_type(self, col):
|
||||||
|
if self.cursor.istype(col, "BOOL"):
|
||||||
|
return "BOOL"
|
||||||
|
if self.cursor.istype(col, "INT"):
|
||||||
|
return "INT"
|
||||||
|
if self.cursor.istype(col, "BIGINT"):
|
||||||
|
return "BIGINT"
|
||||||
|
if self.cursor.istype(col, "TINYINT"):
|
||||||
|
return "TINYINT"
|
||||||
|
if self.cursor.istype(col, "SMALLINT"):
|
||||||
|
return "SMALLINT"
|
||||||
|
if self.cursor.istype(col, "FLOAT"):
|
||||||
|
return "FLOAT"
|
||||||
|
if self.cursor.istype(col, "DOUBLE"):
|
||||||
|
return "DOUBLE"
|
||||||
|
if self.cursor.istype(col, "BINARY"):
|
||||||
|
return "BINARY"
|
||||||
|
if self.cursor.istype(col, "NCHAR"):
|
||||||
|
return "NCHAR"
|
||||||
|
if self.cursor.istype(col, "TIMESTAMP"):
|
||||||
|
return "TIMESTAMP"
|
||||||
|
if self.cursor.istype(col, "JSON"):
|
||||||
|
return "JSON"
|
||||||
|
if self.cursor.istype(col, "TINYINT UNSIGNED"):
|
||||||
|
return "TINYINT UNSIGNED"
|
||||||
|
if self.cursor.istype(col, "SMALLINT UNSIGNED"):
|
||||||
|
return "SMALLINT UNSIGNED"
|
||||||
|
if self.cursor.istype(col, "INT UNSIGNED"):
|
||||||
|
return "INT UNSIGNED"
|
||||||
|
if self.cursor.istype(col, "BIGINT UNSIGNED"):
|
||||||
|
return "BIGINT UNSIGNED"
|
||||||
|
|
||||||
def taosdStatus(self, state):
|
def taosdStatus(self, state):
|
||||||
tdLog.sleep(5)
|
tdLog.sleep(5)
|
||||||
pstate = 0
|
pstate = 0
|
||||||
|
|
|
@ -163,38 +163,6 @@ class TDTestCase:
|
||||||
# return filter(None, sqls)
|
# return filter(None, sqls)
|
||||||
return list(filter(None, sqls))
|
return list(filter(None, sqls))
|
||||||
|
|
||||||
def __get_type(self, col):
|
|
||||||
if tdSql.cursor.istype(col, "BOOL"):
|
|
||||||
return "BOOL"
|
|
||||||
if tdSql.cursor.istype(col, "INT"):
|
|
||||||
return "INT"
|
|
||||||
if tdSql.cursor.istype(col, "BIGINT"):
|
|
||||||
return "BIGINT"
|
|
||||||
if tdSql.cursor.istype(col, "TINYINT"):
|
|
||||||
return "TINYINT"
|
|
||||||
if tdSql.cursor.istype(col, "SMALLINT"):
|
|
||||||
return "SMALLINT"
|
|
||||||
if tdSql.cursor.istype(col, "FLOAT"):
|
|
||||||
return "FLOAT"
|
|
||||||
if tdSql.cursor.istype(col, "DOUBLE"):
|
|
||||||
return "DOUBLE"
|
|
||||||
if tdSql.cursor.istype(col, "BINARY"):
|
|
||||||
return "BINARY"
|
|
||||||
if tdSql.cursor.istype(col, "NCHAR"):
|
|
||||||
return "NCHAR"
|
|
||||||
if tdSql.cursor.istype(col, "TIMESTAMP"):
|
|
||||||
return "TIMESTAMP"
|
|
||||||
if tdSql.cursor.istype(col, "JSON"):
|
|
||||||
return "JSON"
|
|
||||||
if tdSql.cursor.istype(col, "TINYINT UNSIGNED"):
|
|
||||||
return "TINYINT UNSIGNED"
|
|
||||||
if tdSql.cursor.istype(col, "SMALLINT UNSIGNED"):
|
|
||||||
return "SMALLINT UNSIGNED"
|
|
||||||
if tdSql.cursor.istype(col, "INT UNSIGNED"):
|
|
||||||
return "INT UNSIGNED"
|
|
||||||
if tdSql.cursor.istype(col, "BIGINT UNSIGNED"):
|
|
||||||
return "BIGINT UNSIGNED"
|
|
||||||
|
|
||||||
def explain_check(self):
|
def explain_check(self):
|
||||||
sqls = self.sql_list()
|
sqls = self.sql_list()
|
||||||
tdLog.printNoPrefix("===step 1: curent case, must return query OK")
|
tdLog.printNoPrefix("===step 1: curent case, must return query OK")
|
||||||
|
|
|
@ -116,37 +116,6 @@ class TDTestCase:
|
||||||
# return filter(None, sqls)
|
# return filter(None, sqls)
|
||||||
return list(filter(None, sqls))
|
return list(filter(None, sqls))
|
||||||
|
|
||||||
def __get_type(self, col):
|
|
||||||
if tdSql.cursor.istype(col, "BOOL"):
|
|
||||||
return "BOOL"
|
|
||||||
if tdSql.cursor.istype(col, "INT"):
|
|
||||||
return "INT"
|
|
||||||
if tdSql.cursor.istype(col, "BIGINT"):
|
|
||||||
return "BIGINT"
|
|
||||||
if tdSql.cursor.istype(col, "TINYINT"):
|
|
||||||
return "TINYINT"
|
|
||||||
if tdSql.cursor.istype(col, "SMALLINT"):
|
|
||||||
return "SMALLINT"
|
|
||||||
if tdSql.cursor.istype(col, "FLOAT"):
|
|
||||||
return "FLOAT"
|
|
||||||
if tdSql.cursor.istype(col, "DOUBLE"):
|
|
||||||
return "DOUBLE"
|
|
||||||
if tdSql.cursor.istype(col, "BINARY"):
|
|
||||||
return "BINARY"
|
|
||||||
if tdSql.cursor.istype(col, "NCHAR"):
|
|
||||||
return "NCHAR"
|
|
||||||
if tdSql.cursor.istype(col, "TIMESTAMP"):
|
|
||||||
return "TIMESTAMP"
|
|
||||||
if tdSql.cursor.istype(col, "JSON"):
|
|
||||||
return "JSON"
|
|
||||||
if tdSql.cursor.istype(col, "TINYINT UNSIGNED"):
|
|
||||||
return "TINYINT UNSIGNED"
|
|
||||||
if tdSql.cursor.istype(col, "SMALLINT UNSIGNED"):
|
|
||||||
return "SMALLINT UNSIGNED"
|
|
||||||
if tdSql.cursor.istype(col, "INT UNSIGNED"):
|
|
||||||
return "INT UNSIGNED"
|
|
||||||
if tdSql.cursor.istype(col, "BIGINT UNSIGNED"):
|
|
||||||
return "BIGINT UNSIGNED"
|
|
||||||
|
|
||||||
def hyperloglog_check(self):
|
def hyperloglog_check(self):
|
||||||
sqls = self.sql_list()
|
sqls = self.sql_list()
|
||||||
|
|
|
@ -195,38 +195,6 @@ class TDTestCase:
|
||||||
# return filter(None, sqls)
|
# return filter(None, sqls)
|
||||||
return list(filter(None, current_sqls)), list(filter(None, err_sqls))
|
return list(filter(None, current_sqls)), list(filter(None, err_sqls))
|
||||||
|
|
||||||
def __get_type(self, col):
|
|
||||||
if tdSql.cursor.istype(col, "BOOL"):
|
|
||||||
return "BOOL"
|
|
||||||
if tdSql.cursor.istype(col, "INT"):
|
|
||||||
return "INT"
|
|
||||||
if tdSql.cursor.istype(col, "BIGINT"):
|
|
||||||
return "BIGINT"
|
|
||||||
if tdSql.cursor.istype(col, "TINYINT"):
|
|
||||||
return "TINYINT"
|
|
||||||
if tdSql.cursor.istype(col, "SMALLINT"):
|
|
||||||
return "SMALLINT"
|
|
||||||
if tdSql.cursor.istype(col, "FLOAT"):
|
|
||||||
return "FLOAT"
|
|
||||||
if tdSql.cursor.istype(col, "DOUBLE"):
|
|
||||||
return "DOUBLE"
|
|
||||||
if tdSql.cursor.istype(col, "BINARY"):
|
|
||||||
return "BINARY"
|
|
||||||
if tdSql.cursor.istype(col, "NCHAR"):
|
|
||||||
return "NCHAR"
|
|
||||||
if tdSql.cursor.istype(col, "TIMESTAMP"):
|
|
||||||
return "TIMESTAMP"
|
|
||||||
if tdSql.cursor.istype(col, "JSON"):
|
|
||||||
return "JSON"
|
|
||||||
if tdSql.cursor.istype(col, "TINYINT UNSIGNED"):
|
|
||||||
return "TINYINT UNSIGNED"
|
|
||||||
if tdSql.cursor.istype(col, "SMALLINT UNSIGNED"):
|
|
||||||
return "SMALLINT UNSIGNED"
|
|
||||||
if tdSql.cursor.istype(col, "INT UNSIGNED"):
|
|
||||||
return "INT UNSIGNED"
|
|
||||||
if tdSql.cursor.istype(col, "BIGINT UNSIGNED"):
|
|
||||||
return "BIGINT UNSIGNED"
|
|
||||||
|
|
||||||
def leastsquares_check(self):
|
def leastsquares_check(self):
|
||||||
current_sqls, err_sqls = self.sql_list()
|
current_sqls, err_sqls = self.sql_list()
|
||||||
for i in range(len(err_sqls)):
|
for i in range(len(err_sqls)):
|
||||||
|
|
|
@ -159,38 +159,6 @@ class TDTestCase:
|
||||||
# return filter(None, sqls)
|
# return filter(None, sqls)
|
||||||
return list(filter(None, sqls))
|
return list(filter(None, sqls))
|
||||||
|
|
||||||
def __get_type(self, col):
|
|
||||||
if tdSql.cursor.istype(col, "BOOL"):
|
|
||||||
return "BOOL"
|
|
||||||
if tdSql.cursor.istype(col, "INT"):
|
|
||||||
return "INT"
|
|
||||||
if tdSql.cursor.istype(col, "BIGINT"):
|
|
||||||
return "BIGINT"
|
|
||||||
if tdSql.cursor.istype(col, "TINYINT"):
|
|
||||||
return "TINYINT"
|
|
||||||
if tdSql.cursor.istype(col, "SMALLINT"):
|
|
||||||
return "SMALLINT"
|
|
||||||
if tdSql.cursor.istype(col, "FLOAT"):
|
|
||||||
return "FLOAT"
|
|
||||||
if tdSql.cursor.istype(col, "DOUBLE"):
|
|
||||||
return "DOUBLE"
|
|
||||||
if tdSql.cursor.istype(col, "BINARY"):
|
|
||||||
return "BINARY"
|
|
||||||
if tdSql.cursor.istype(col, "NCHAR"):
|
|
||||||
return "NCHAR"
|
|
||||||
if tdSql.cursor.istype(col, "TIMESTAMP"):
|
|
||||||
return "TIMESTAMP"
|
|
||||||
if tdSql.cursor.istype(col, "JSON"):
|
|
||||||
return "JSON"
|
|
||||||
if tdSql.cursor.istype(col, "TINYINT UNSIGNED"):
|
|
||||||
return "TINYINT UNSIGNED"
|
|
||||||
if tdSql.cursor.istype(col, "SMALLINT UNSIGNED"):
|
|
||||||
return "SMALLINT UNSIGNED"
|
|
||||||
if tdSql.cursor.istype(col, "INT UNSIGNED"):
|
|
||||||
return "INT UNSIGNED"
|
|
||||||
if tdSql.cursor.istype(col, "BIGINT UNSIGNED"):
|
|
||||||
return "BIGINT UNSIGNED"
|
|
||||||
|
|
||||||
def spread_check(self):
|
def spread_check(self):
|
||||||
sqls = self.sql_list()
|
sqls = self.sql_list()
|
||||||
tdLog.printNoPrefix("===step 1: curent case, must return query OK")
|
tdLog.printNoPrefix("===step 1: curent case, must return query OK")
|
||||||
|
|
Loading…
Reference in New Issue