compatibility.py 6.1 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
from urllib.parse import uses_relative
import taos
import sys
import os
import time


from util.log import *
from util.sql import *
from util.cases import *
from util.dnodes import *
from util.dnodes import TDDnodes
from util.dnodes import TDDnode
from util.cluster import *


class TDTestCase:
    def caseDescription(self):
        '''
        3.0 data compatibility test 
        case1: basedata version is 3.0.1.0
        '''
        return

    def init(self, conn, logSql):
        tdLog.debug(f"start to excute {__file__}")
        tdSql.init(conn.cursor())


    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 or "taosd.exe" 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 getCfgPath(self):
        buildPath = self.getBuildPath()
        selfPath = os.path.dirname(os.path.realpath(__file__))

        if ("community" in selfPath):
51
            cfgPath = buildPath + "/../sim/dnode1/cfg/"
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
        else:
            cfgPath = buildPath + "/../sim/dnode1/cfg/"

        return cfgPath

    def installTaosd(self,bPath,cPath):
        # os.system(f"rmtaos && mkdir -p {self.getBuildPath()}/build/lib/temp &&  mv {self.getBuildPath()}/build/lib/libtaos.so*  {self.getBuildPath()}/build/lib/temp/ ")
        # os.system(f" mv {bPath}/build  {bPath}/build_bak ")
        # os.system(f"mv {self.getBuildPath()}/build/lib/libtaos.so  {self.getBuildPath()}/build/lib/libtaos.so_bak ")
        # os.system(f"mv {self.getBuildPath()}/build/lib/libtaos.so.1  {self.getBuildPath()}/build/lib/libtaos.so.1_bak ")

        packagePath="/usr/local/src/"
        packageName="TDengine-server-3.0.1.0-Linux-x64.tar.gz"
        os.system(f"cd {packagePath} &&  tar xvf  TDengine-server-3.0.1.0-Linux-x64.tar.gz && cd TDengine-server-3.0.1.0 && ./install.sh  -e no  " )
        tdDnodes.stop(1)
        print(f"start taosd: nohup taosd -c {cPath} & ")
        os.system(f" nohup taosd -c {cPath} & " )
        sleep(1)


        
    def buildTaosd(self,bPath):
        # os.system(f"mv {bPath}/build_bak  {bPath}/build ")
        os.system(f" cd {bPath}  &&  make install ")


    def run(self):
        bPath=self.getBuildPath()
        cPath=self.getCfgPath()
haoranc's avatar
haoranc 已提交
81 82 83
        dbname = "test"
        stb = f"{dbname}.meters"
        self.installTaosd(bPath,cPath)
haoranc's avatar
haoranc 已提交
84
        os.system("echo 'debugFlag 143' > /etc/taos/taos.cfg ")
haoranc's avatar
haoranc 已提交
85 86 87
        tableNumbers=100
        recordNumbers1=100
        recordNumbers2=1000
haoranc's avatar
haoranc 已提交
88 89 90 91 92 93 94 95 96 97 98 99
        tdsqlF=tdCom.newTdSql()
        print(tdsqlF)
        tdsqlF.query(f"SELECT SERVER_VERSION();")
        print(tdsqlF.query(f"SELECT SERVER_VERSION();"))
        oldServerVersion=tdsqlF.queryResult[0][0]
        tdLog.info(f"Base server version is {oldServerVersion}")
        tdsqlF.query(f"SELECT CLIENT_VERSION();")
        # the oldClientVersion can't be updated in the same python process,so the version is new compiled verison
        oldClientVersion=tdsqlF.queryResult[0][0]
        tdLog.info(f"Base client version is {oldClientVersion}")

        tdLog.printNoPrefix(f"==========step1:prepare and check data in old version-{oldServerVersion}")
haoranc's avatar
haoranc 已提交
100 101
        tdLog.info(f" LD_LIBRARY_PATH=/usr/lib  taosBenchmark -t {tableNumbers} -n {recordNumbers1} -y  ")
        os.system(f"LD_LIBRARY_PATH=/usr/lib taosBenchmark -t {tableNumbers} -n {recordNumbers1} -y  ")
haoranc's avatar
haoranc 已提交
102
        sleep(3)
haoranc's avatar
haoranc 已提交
103

haoranc's avatar
haoranc 已提交
104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152
        # tdsqlF.query(f"select count(*) from {stb}")
        # tdsqlF.checkData(0,0,tableNumbers*recordNumbers1)
        os.system("pkill taosd")
        sleep(1)

        tdLog.printNoPrefix("==========step2:update new version ")
        self.buildTaosd(bPath)
        tdDnodes.start(1)
        sleep(1)
        tdsql=tdCom.newTdSql()
        print(tdsql)


        tdsql.query(f"SELECT SERVER_VERSION();")
        nowServerVersion=tdsql.queryResult[0][0]
        tdLog.info(f"New server version is {nowServerVersion}")
        tdsql.query(f"SELECT CLIENT_VERSION();")
        nowClientVersion=tdsql.queryResult[0][0]
        tdLog.info(f"New client version is {nowClientVersion}")

        tdLog.printNoPrefix(f"==========step3:prepare and check data in new version-{nowServerVersion}")
        tdsql.query(f"select count(*) from {stb}")
        tdsql.checkData(0,0,tableNumbers*recordNumbers1)        
        os.system(f"taosBenchmark -t {tableNumbers} -n {recordNumbers2} -y  ")
        tdsql.query(f"select count(*) from {stb}")
        tdsql.checkData(0,0,tableNumbers*recordNumbers2)

        tdsql=tdCom.newTdSql()
        tdLog.printNoPrefix(f"==========step4:verify backticks in taos Sql-TD18542")
        tdsql.execute("drop database if exists db")
        tdsql.execute("create database db")
        tdsql.execute("use db")
        tdsql.execute("create stable db.stb1 (ts timestamp, c1 int) tags (t1 int);")
        tdsql.execute("insert into db.ct1 using db.stb1 TAGS(1) values(now(),11);")
        tdsql.error(" insert into `db.ct2` using db.stb1 TAGS(9) values(now(),11);")
        tdsql.error(" insert into db.`db.ct2` using db.stb1 TAGS(9) values(now(),11);")
        tdsql.execute("insert into `db`.ct3 using db.stb1 TAGS(3) values(now(),13);")
        tdsql.query("select * from db.ct3")
        tdsql.checkData(0,1,13)
        tdsql.execute("insert into db.`ct4` using db.stb1 TAGS(4) values(now(),14);")
        tdsql.query("select * from db.ct4")
        tdsql.checkData(0,1,14)
        tdsql.query("describe  information_schema.ins_databases;")
        qRows=tdsql.queryRows   
        for i in  range(qRows) :
            if tdsql.queryResult[i][0]=="retentions" :
                return True
            else:
                return False
153 154 155 156 157 158
    def stop(self):
        tdSql.close()
        tdLog.success(f"{__file__} successfully executed")

tdCases.addLinux(__file__, TDTestCase())
tdCases.addWindows(__file__, TDTestCase())