提交 ee1f0989 编写于 作者: C cpwu

[TD-6108] <fix> fix the case

上级 7222bb45
...@@ -1137,10 +1137,7 @@ class TDTestCase: ...@@ -1137,10 +1137,7 @@ class TDTestCase:
:return: apercentile query statement,default: select apercentile(c1, 0, 1) from t1 :return: apercentile query statement,default: select apercentile(c1, 0, 1) from t1
''' '''
if alias: return f"select apercentile({col}, {p}{com} {algo}) {alias} from {table_expr} {condition}"
return f"select apercentile({col}, {p}{com} {algo}) {alias} from {table_expr} {condition}"
else:
return f"select apercentile({col}, {p}{com} {algo}) from {table_expr} {condition}"
def checkapert(self,col="c1", p=0, com=',', algo='"t-digest"', alias="", table_expr="t1", condition="" ): def checkapert(self,col="c1", p=0, com=',', algo='"t-digest"', alias="", table_expr="t1", condition="" ):
...@@ -1165,28 +1162,54 @@ class TDTestCase: ...@@ -1165,28 +1162,54 @@ class TDTestCase:
for pi in pset: for pi in pset:
if "group" in condition: if "group" in condition:
tdSql.query(self.apercentile_query_form( tdSql.query(f"select last_row({col}) from {table_expr} {condition}")
col=col, p=pi, com=com, algo='"default"', alias=alias, table_expr=table_expr, condition=condition
))
query_result = tdSql.queryResult query_result = tdSql.queryResult
query_rows = tdSql.queryRows query_rows = tdSql.queryRows
tdSql.query(self.apercentile_query_form(
col=col, p=pi, com=com, algo='"t-digest"', alias=alias, table_expr=table_expr, condition=condition
))
for i in range(query_rows): for i in range(query_rows):
pre_condition = condition.replace("slimit",'limit').replace("group by tbname", "").split("soffset")[0]
tbname = query_result[i][-1]
tdSql.query(f"select percentile({col}, {pi}) {alias} from {tbname} {pre_condition}")
print(tdSql.sql)
pre_data = tdSql.getData(0, 0)
tdSql.query(self.apercentile_query_form(
col=col, p=pi, com=com, algo='"t-digest"', alias=alias, table_expr=table_expr, condition=condition
))
if abs(tdSql.getData(i, 0)) >= (spread_num*0.02): if abs(tdSql.getData(i, 0)) >= (spread_num*0.02):
tdSql.checkDeviaRation(i, 0, query_result[i][0], 0.1) tdSql.checkDeviaRation(i, 0, pre_data, 0.1)
else: else:
devia = abs((tdSql.getData(i, 0) - query_result[i][0]) / (spread_num * 0.02)) devia = abs((tdSql.getData(i, 0) - pre_data) / (spread_num * 0.02))
if devia < 0.5: if devia < 0.5:
tdLog.info(f"sql:{tdSql.sql}, result data:{tdSql.getData(i, 0)}, expect data:{tdSql.queryResult[i][0]}, " tdLog.info(f"sql:{tdSql.sql}, result data:{tdSql.getData(i, 0)}, expect data:{pre_data}, "
f"actual deviation:{devia} <= expect deviation: 0.01") f"actual deviation:{devia} <= expect deviation: 0.01")
else: else:
tdLog.exit( tdLog.exit(
f"[{inspect.getframeinfo(inspect.stack()[1][0]).lineno}],check failed:sql:{tdSql.sql}, " f"[{inspect.getframeinfo(inspect.stack()[1][0]).lineno}],check failed:sql:{tdSql.sql}, "
f"result data:{tdSql.getData(i, 0)}, expect data:{tdSql.queryResult[i][0]}, " f"result data:{tdSql.getData(i, 0)}, expect data:{pre_data}, "
f"actual deviation:{devia} > expect deviation: 0.01") f"actual deviation:{devia} > expect deviation: 0.01")
# if "group" in condition:
# tdSql.query(self.apercentile_query_form(
# col=col, p=pi, com=com, algo='"default"', alias=alias, table_expr=table_expr, condition=condition
# ))
# query_result = tdSql.queryResult
# query_rows = tdSql.queryRows
# tdSql.query(self.apercentile_query_form(
# col=col, p=pi, com=com, algo='"t-digest"', alias=alias, table_expr=table_expr, condition=condition
# ))
# for i in range(query_rows):
# if abs(tdSql.getData(i, 0)) >= (spread_num*0.02):
# tdSql.checkDeviaRation(i, 0, query_result[i][0], 0.1)
# else:
# devia = abs((tdSql.getData(i, 0) - query_result[i][0]) / (spread_num * 0.02))
# if devia < 0.5:
# tdLog.info(f"sql:{tdSql.sql}, result data:{tdSql.getData(i, 0)}, expect data:{tdSql.queryResult[i][0]}, "
# f"actual deviation:{devia} <= expect deviation: 0.01")
# else:
# tdLog.exit(
# f"[{inspect.getframeinfo(inspect.stack()[1][0]).lineno}],check failed:sql:{tdSql.sql}, "
# f"result data:{tdSql.getData(i, 0)}, expect data:{tdSql.queryResult[i][0]}, "
# f"actual deviation:{devia} > expect deviation: 0.01")
else: else:
if ',' in alias or not alias: if ',' in alias or not alias:
tdSql.query(f"select {col} from {table_expr} {condition}") tdSql.query(f"select {col} from {table_expr} {condition}")
...@@ -1215,11 +1238,6 @@ class TDTestCase: ...@@ -1215,11 +1238,6 @@ class TDTestCase:
f"result data:{tdSql.getData(0, 0)}, expect data:{np.percentile(query_result, pi)}, " f"result data:{tdSql.getData(0, 0)}, expect data:{np.percentile(query_result, pi)}, "
f"actual deviation:{devia} > expect deviation: 0.01") f"actual deviation:{devia} > expect deviation: 0.01")
# if algo == '"t-digest"':
# tdSql.query(self.apercentile_query_form(
# col=col, p=pi, com=com, algo='"default"', alias=alias, table_expr=table_expr, condition=condition
# ))
# tdSql.checkDeviaRation(0, 0, np.percentile(query_result, pi), 0.1)
def apercentile_query(self): def apercentile_query(self):
...@@ -1504,7 +1522,7 @@ class TDTestCase: ...@@ -1504,7 +1522,7 @@ class TDTestCase:
tdLog.printNoPrefix("######## insert data test:") tdLog.printNoPrefix("######## insert data test:")
nowtime = int(round(time.time() * 1000)) nowtime = int(round(time.time() * 1000))
per_table_rows = 100 per_table_rows = 1000
self.apercentile_data(tbnum, per_table_rows, nowtime) self.apercentile_data(tbnum, per_table_rows, nowtime)
self.apercentile_query() self.apercentile_query()
self.error_apercentile() self.error_apercentile()
......
...@@ -256,10 +256,11 @@ class TDSql: ...@@ -256,10 +256,11 @@ class TDSql:
else: else:
devia = abs((data - self.queryResult[row][col])/data) devia = abs((data - self.queryResult[row][col])/data)
if devia <= deviation: if devia <= deviation:
tdLog.info(f"sql:{args[2]}, result data:{args[7]}, expect data:{args[3]}, " tdLog.info(f"sql:{args[2]}, row:{row}, col:{col}, result data:{args[7]}, expect data:{args[3]}, "
f"actual deviation:{devia} <= expect deviation:{args[5]}") f"actual deviation:{devia} <= expect deviation:{args[5]}")
else: else:
tdLog.exit(f"{args[0]}({args[1]}) failed: sql:{args[2]}, result data:{args[7]}, expect data:{args[3]}," tdLog.exit(f"{args[0]}({args[1]}) failed: sql:{args[2]}, row:{row}, col:{col}, "
f"result data:{args[7]}, expect data:{args[3]},"
f"actual deviation:{devia} > expect deviation:{args[5]}") f"actual deviation:{devia} > expect deviation:{args[5]}")
pass pass
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册