Merge pull request #5628 from taosdata/test/TD-3589
[TD-3589]<test>:add case for TD-3589
This commit is contained in:
commit
3fca391bf1
|
@ -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
|
||||
|
|
|
@ -0,0 +1,156 @@
|
|||
###################################################################
|
||||
# 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())
|
Loading…
Reference in New Issue