未验证 提交 3fca391b 编写于 作者: H huili 提交者: GitHub

Merge pull request #5628 from taosdata/test/TD-3589

[TD-3589]<test>:add case for TD-3589
......@@ -166,6 +166,7 @@ python3 ./test.py -f stable/query_after_reset.py
# perfbenchmark
python3 ./test.py -f perfbenchmark/bug3433.py
python3 ./test.py -f perfbenchmark/bug3589.py
#query
......
###################################################################
# 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 json
from util.log import *
from util.cases import *
from util.sql import *
from util.dnodes import *
class TDTestCase:
def __init__(self):
self.path = ""
def init(self, conn, logSql):
tdLog.debug("start to execute %s" % __file__)
tdSql.init(conn.cursor(), logSql)
def getBuildPath(self):
selfPath = os.path.dirname(os.path.realpath(__file__))
if ("community" in selfPath):
projPath = selfPath[:selfPath.find("community")]
else:
projPath = selfPath[:selfPath.find("tests")]
for root, dirs, files in os.walk(projPath):
if ("taosd" in files):
rootRealPath = os.path.dirname(os.path.realpath(root))
if ("packaging" not in rootRealPath):
buildPath = root[:len(root) - len("/debug/build/bin")]
break
return buildPath
def getCfgDir(self):
return self.getBuildPath() + "/sim/psim/cfg"
def querycfg(self):
cfgdir = self.getCfgDir()
querycfg={
"filetype": "query",
"cfgdir": cfgdir,
"host": "127.0.0.1",
"port": 6030,
"user": "root",
"password": "taosdata",
"confirm_parameter_prompt": "yes",
"databases": "db",
"specified_table_query": {
"query_interval": 0,
"concurrent": 1,
"sqls": [
{
"sql": "select * from t10, t11 where t10.ts=t11.ts"
}
]
}
}
return querycfg
def querycfgfile(self):
querycfg = self.querycfg()
date = datetime.datetime.now().strftime("%Y%m%d%H%M")
querycfg.get("specified_table_query").get("sqls")[0]["result"] = f"/tmp/query_{date}.log"
file_query_table = f"/tmp/query_{date}.json"
with open(file_query_table, "w") as f:
json.dump(querycfg, f)
return [file_query_table, querycfg]
def querytable(self, filepath):
buildPath = self.getBuildPath()
if (buildPath == ""):
tdLog.exit("taosd not found!")
else:
tdLog.info(f"taosd found in {buildPath}")
binPath = buildPath + "/debug/build/bin/"
query_table_cmd = f"yes | {binPath}taosdemo -f {filepath}"
_ = subprocess.check_output(query_table_cmd, shell=True).decode("utf-8")
def checkqueryresult(self, expectrows):
querycfg = self.querycfgfile()[1]
result_file = querycfg.get("specified_table_query").get("sqls")[0].get("result") + "-0"
if result_file:
check_cmd = f"wc -l {result_file}"
check_data_init = subprocess.check_output(check_cmd, shell=True).decode("utf-8")
check_data = int(check_data_init[0])
if check_data == expectrows:
tdLog.info(f"queryResultRows:{check_data} == expect:{expectrows}")
else:
caller = inspect.getframeinfo(inspect.stack()[1][0])
args = (caller.filename, caller.lineno, check_data, expectrows)
tdLog.exit(f"{args[0]}({args[1]}) failed: result:{args[2]} != expect:{args[3]}")
def droptmpfile(self):
drop_file_cmd = "rm -f /tmp/query_* "
_ = subprocess.check_output(drop_file_cmd, shell=True).decode("utf-8")
drop_file_cmd = "rm -f querySystemInfo-*"
_ = subprocess.check_output(drop_file_cmd, shell=True).decode("utf-8")
def run(self):
tdSql.prepare()
tdLog.printNoPrefix("==========step1:create table && insert data")
tdSql.execute("alter database db keep 36500")
tdSql.execute(
"create table stb1 (ts timestamp, c1 int) TAGS(t1 int)"
)
tdSql.execute("create table t10 using stb1 tags(1)")
tdSql.execute("create table t11 using stb1 tags(2)")
tdSql.execute("insert into t10 values (-865000000, 1)")
tdSql.execute("insert into t11 values (-865000000, 2)")
tdSql.execute("insert into t10 values ('1969-12-31 23:59:59.000', 2)")
tdSql.execute("insert into t11 values ('1969-12-31 23:59:59.000', 3)")
tdSql.execute("insert into t10 values ('1970-01-01 00:00:00.000', 3)")
tdSql.execute("insert into t11 values ('1970-01-01 00:00:00.000', 4)")
tdSql.execute("insert into t10 values (-15230000, 4)")
tdSql.execute("insert into t11 values (-15230000, 5)")
tdSql.execute("insert into t10 values (-15220000, 5)")
tdSql.execute("insert into t11 values (-15220000, 6)")
tdSql.execute("insert into t10 values (-15210000, 6)")
tdSql.execute("insert into t11 values (-15210000, 7)")
tdSql.execute("insert into t10 values (0, 7)")
tdSql.execute("insert into t11 values (0, 8)")
tdSql.execute("insert into t10 values ('2020-10-01 00:00:00.000', 8)")
tdSql.execute("insert into t11 values ('2020-10-01 00:00:00.000', 9)")
tdLog.printNoPrefix("==========step2:query")
query_file = self.querycfgfile()[0]
self.querytable(query_file)
self.checkqueryresult(8)
self.droptmpfile()
def stop(self):
tdSql.close()
tdLog.success("%s successfully executed" % __file__)
tdCases.addWindows(__file__, TDTestCase())
tdCases.addLinux(__file__, TDTestCase())
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册