diff --git a/tests/pytest/manualTest/manual_change_time_1_1.py b/tests/pytest/client/change_time_1_1.py similarity index 53% rename from tests/pytest/manualTest/manual_change_time_1_1.py rename to tests/pytest/client/change_time_1_1.py index 8b444eeb6a0926a85a747fde6ff650eeca6ee669..24e0195a9c020c793f3e82f45029d8e24199f50b 100644 --- a/tests/pytest/manualTest/manual_change_time_1_1.py +++ b/tests/pytest/client/change_time_1_1.py @@ -15,6 +15,7 @@ import sys from util.log import * from util.cases import * from util.sql import * +from util.pathFinding import * from util.dnodes import tdDnodes from datetime import datetime import subprocess @@ -24,54 +25,12 @@ class TDTestCase: def init(self, conn, logSql): tdLog.debug("start to execute %s" % __file__) tdSql.init(conn.cursor(), logSql) - - def getTDenginePath(self): - selfPath = os.path.dirname(os.path.realpath(__file__)) - - if ("community" in selfPath): - projPath = selfPath[:selfPath.find("community")] - else: - projPath = selfPath[:selfPath.find("tests")] - print(projPath) - for root, dirs, files in os.walk(projPath): - if ("sim" in dirs): - print(root) - rootRealPath = os.path.realpath(root) - # if ("packaging" not in rootRealPath): - # buildPath = root[:len(root)-len("/build/bin")] - # break - return rootRealPath - - 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("/build/bin")] - break - return buildPath + tdFindPath.init(__file__) def run(self): tdSql.prepare() - buildPath = self.getBuildPath() - if (buildPath == ""): - tdLog.exit("taosd not found!") - else: - tdLog.info("taosd found in %s" % buildPath) - binPath = buildPath+ "/build/bin/" - TDenginePath = self.getTDenginePath() - print('TD '+ TDenginePath) - if (TDenginePath == ""): - tdLog.exit("TDengine not found!") - else: - tdLog.info("TDengine found in %s" % TDenginePath) + binPath = tdFindPath.getTaosdemoPath() + TDenginePath = tdFindPath.getTDenginePath() ## change system time to 2020/10/20 os.system('sudo timedatectl set-ntp off') @@ -80,32 +39,33 @@ class TDTestCase: #run taosdemo to insert data. one row per second from 2020/10/11 to 2020/10/20 #11 data files should be generated #vnode at TDinternal/community/sim/dnode1/data/vnode - os.system("%staosdemo -f tools/taosdemoAllTest/manual_change_time_1_1_A.json" % binPath) + os.system(f"{binPath}taosdemo -f tools/taosdemoAllTest/manual_change_time_1_1_A.json") commandArray = ['ls', '-l', f'{TDenginePath}/sim/dnode1/data/vnode/vnode2/tsdb/data'] result = subprocess.run(commandArray, stdout=subprocess.PIPE).stdout.decode('utf-8') print(result.count('data')) if result.count('data') != 11: tdLog.exit('wrong number of files') else: - tdLog.info("data file number correct") + tdLog.debug("data file number correct") #move 5 days ahead to 2020/10/25. 4 oldest files should be removed during the new write #leaving 7 data files. os.system ('timedatectl set-time 2020-10-25') - os.system("%staosdemo -f tools/taosdemoAllTest/manual_change_time_1_1_B.json" % binPath) + os.system(f"{binPath}taosdemo -f tools/taosdemoAllTest/manual_change_time_1_1_B.json") commandArray = ['ls', '-l', f'{TDenginePath}/sim/dnode1/data/vnode/vnode2/tsdb/data'] result = subprocess.run(commandArray, stdout=subprocess.PIPE).stdout.decode('utf-8') print(result.count('data')) if result.count('data') != 7: tdLog.exit('wrong number of files') else: - tdLog.info("data file number correct") + tdLog.debug("data file number correct") tdSql.query('select first(ts) from stb_0') tdSql.checkData(0,0,datetime(2020,10,14,8,0,0,0)) #check the last data in the database def stop(self): + os.system('sudo timedatectl set-ntp on') tdSql.close() - tdLog.debug("%s alter block manual check finish" % __file__) + tdLog.success("alter block manual check finish") tdCases.addWindows(__file__, TDTestCase()) diff --git a/tests/pytest/manualTest/manual_change_time_1_2.py b/tests/pytest/client/change_time_1_2.py similarity index 58% rename from tests/pytest/manualTest/manual_change_time_1_2.py rename to tests/pytest/client/change_time_1_2.py index 076099edaecdf4ebbd5b3a21d86abe0ab20f51ca..cd1a17926da89ebb6d0f67bbe5f818f763a1ea0e 100644 --- a/tests/pytest/manualTest/manual_change_time_1_2.py +++ b/tests/pytest/client/change_time_1_2.py @@ -16,6 +16,7 @@ from util.log import * from util.cases import * from util.sql import * from util.dnodes import tdDnodes +from util.pathFinding import * from datetime import datetime import subprocess @@ -24,54 +25,12 @@ class TDTestCase: 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("/build/bin")] - break - return buildPath - - def getTDenginePath(self): - selfPath = os.path.dirname(os.path.realpath(__file__)) - - if ("community" in selfPath): - projPath = selfPath[:selfPath.find("community")] - else: - projPath = selfPath[:selfPath.find("tests")] - print(projPath) - for root, dirs, files in os.walk(projPath): - if ("sim" in dirs): - print(root) - rootRealPath = os.path.realpath(root) - # if ("packaging" not in rootRealPath): - # buildPath = root[:len(root)-len("/build/bin")] - # break - return rootRealPath + tdFindPath.init(__file__) def run(self): tdSql.prepare() - buildPath = self.getBuildPath() - if (buildPath == ""): - tdLog.exit("taosd not found!") - else: - tdLog.info("taosd found in %s" % buildPath) - binPath = buildPath+ "/build/bin/" - TDenginePath = self.getTDenginePath() - print('TD '+ TDenginePath) - if (TDenginePath == ""): - tdLog.exit("TDengine not found!") - else: - tdLog.info("TDengine found in %s" % TDenginePath) + binPath = tdFindPath.getTaosdemoPath() + TDenginePath = tdFindPath.getTDenginePath() ## change system time to 2020/10/20 os.system ('timedatectl set-ntp off') @@ -80,14 +39,14 @@ class TDTestCase: #run taosdemo to insert data. one row per second from 2020/10/11 to 2020/10/20 #11 data files should be generated #vnode at TDinternal/community/sim/dnode1/data/vnode - os.system("%staosdemo -f tools/taosdemoAllTest/manual_change_time_1_1_A.json" % binPath) + os.system(f"{binPath}taosdemo -f tools/taosdemoAllTest/manual_change_time_1_1_A.json") commandArray = ['ls', '-l', f'{TDenginePath}/sim/dnode1/data/vnode/vnode2/tsdb/data'] result = subprocess.run(commandArray, stdout=subprocess.PIPE).stdout.decode('utf-8') print(result.count('data')) if result.count('data') != 11: tdLog.exit('wrong number of files') else: - tdLog.info("data file number correct") + tdLog.debug("data file number correct") tdSql.query('select first(ts) from stb_0') #check the last data in the database tdSql.checkData(0,0,datetime(2020,10,11,0,0,0,0)) @@ -109,13 +68,14 @@ class TDTestCase: if result.count('data') != 7: tdLog.exit('wrong number of files') else: - tdLog.info("data file number correct") + tdLog.debug("data file number correct") def stop(self): + os.system('sudo timedatectl set-ntp on') tdSql.close() - tdLog.debug("%s alter block manual check finish" % __file__) + tdLog.success("alter block manual check finish") tdCases.addWindows(__file__, TDTestCase()) diff --git a/tests/pytest/fulltest.sh b/tests/pytest/fulltest.sh index 8fed9aa81cc00029daab06df8a1652d79bae230f..6a09a41b9327ad1668c0772a41e1b9b7079c401b 100755 --- a/tests/pytest/fulltest.sh +++ b/tests/pytest/fulltest.sh @@ -256,6 +256,8 @@ python3 ./test.py -f client/client.py python3 ./test.py -f client/version.py python3 ./test.py -f client/alterDatabase.py python3 ./test.py -f client/noConnectionErrorTest.py +python3 test.py -f client/change_time_1_1.py +python3 test.py -f client/change_time_1_2.py # Misc python3 testCompress.py diff --git a/tests/pytest/util/pathFinding.py b/tests/pytest/util/pathFinding.py new file mode 100644 index 0000000000000000000000000000000000000000..9dee5142ce3539c7cd145c3d8364e01c4af25164 --- /dev/null +++ b/tests/pytest/util/pathFinding.py @@ -0,0 +1,83 @@ +################################################################### +# 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 os +from util.log import * + + + +class TDFindPath: + """This class is for finding path within TDengine + """ + def __init__(self): + self.file = "" + + + def init(self, file): + """[summary] + + Args: + file (str): the file location you want to start the query. Generally using __file__ + """ + self.file = file + + def getTaosdemoPath(self): + """for finding the path of directory containing taosdemo + + Returns: + str: the path to directory containing taosdemo + """ + selfPath = os.path.dirname(os.path.realpath(self.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("/build/bin")] + break + if (buildPath == ""): + tdLog.exit("taosd not found!") + else: + tdLog.info(f"taosd found in {buildPath}") + return buildPath + "/build/bin/" + + def getTDenginePath(self): + """for finding the root path of TDengine + + Returns: + str: the root path of TDengine + """ + selfPath = os.path.dirname(os.path.realpath(self.file)) + + if ("community" in selfPath): + projPath = selfPath[:selfPath.find("community")] + else: + projPath = selfPath[:selfPath.find("tests")] + print(projPath) + for root, dirs, files in os.walk(projPath): + if ("sim" in dirs): + print(root) + rootRealPath = os.path.realpath(root) + if (rootRealPath == ""): + tdLog.exit("TDengine not found!") + else: + tdLog.info(f"TDengine found in {rootRealPath}") + return rootRealPath + +tdFindPath = TDFindPath() \ No newline at end of file