From 1ccf9ed4ff0cb43bcca62b1ae5e3397044c033c1 Mon Sep 17 00:00:00 2001 From: Alex Duan <417921451@qq.com> Date: Tue, 16 May 2023 10:03:18 +0800 Subject: [PATCH 1/8] test: add cluster global tdDnodes --- tests/pytest/util/dnodes.py | 12 +++++++++++- tests/system-test/test.py | 4 ++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/tests/pytest/util/dnodes.py b/tests/pytest/util/dnodes.py index 80ab5baa9a..48dae22773 100644 --- a/tests/pytest/util/dnodes.py +++ b/tests/pytest/util/dnodes.py @@ -859,5 +859,15 @@ class TDDnodes: def getAsan(self): return self.asan - +global tdDnodes tdDnodes = TDDnodes() + +# global get +def tdDnodes_Get(): + global tdDnodes + return tdDnodes + +# global set +def tdDnodes_Set(newInst): + global tdDnodes + tdDnodes = newInst \ No newline at end of file diff --git a/tests/system-test/test.py b/tests/system-test/test.py index 7082bb0f22..1676aa04b6 100644 --- a/tests/system-test/test.py +++ b/tests/system-test/test.py @@ -385,6 +385,8 @@ if __name__ == "__main__": tdLog.debug("create an cluster with %s nodes and make %s dnode as independent mnode"%(dnodeNums,mnodeNums)) dnodeslist = cluster.configure_cluster(dnodeNums=dnodeNums, mnodeNums=mnodeNums, independentMnode=independentMnode) tdDnodes = ClusterDnodes(dnodeslist) + # set to global + tdDnodes_Set(tdDnodes) tdDnodes.init(deployPath, masterIp) tdDnodes.setTestCluster(testCluster) tdDnodes.setValgrind(valgrind) @@ -555,6 +557,8 @@ if __name__ == "__main__": tdLog.debug("create an cluster with %s nodes and make %s dnode as independent mnode"%(dnodeNums,mnodeNums)) dnodeslist = cluster.configure_cluster(dnodeNums=dnodeNums, mnodeNums=mnodeNums, independentMnode=independentMnode) tdDnodes = ClusterDnodes(dnodeslist) + # set to global + tdDnodes_Set(tdDnodes) tdDnodes.init(deployPath, masterIp) tdDnodes.setTestCluster(testCluster) tdDnodes.setValgrind(valgrind) From 0fbd496ecb47ec39cc8eb4803cf93e05743a361c Mon Sep 17 00:00:00 2001 From: Alex Duan <417921451@qq.com> Date: Tue, 16 May 2023 10:07:05 +0800 Subject: [PATCH 2/8] test: add cluster global tdDnodes --- .../3-enterprise/restore/restore_basic.py | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 tests/system-test/3-enterprise/restore/restore_basic.py diff --git a/tests/system-test/3-enterprise/restore/restore_basic.py b/tests/system-test/3-enterprise/restore/restore_basic.py new file mode 100644 index 0000000000..8e9d43886b --- /dev/null +++ b/tests/system-test/3-enterprise/restore/restore_basic.py @@ -0,0 +1,57 @@ +################################################################### +# 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 -*- + + +from util.log import * +from util.cases import * +from util.sql import * +from util.common import * +from util.sqlset import * +from util.dnodes import * + +import random +import os +import subprocess + + +class TDTestCase: + # init + def init(self, conn, logSql, replicaVar=1): + self.replicaVar = int(replicaVar) + tdLog.debug("start to execute %s" % __file__) + tdSql.init(conn.cursor()) + + + # + + + # run + def run(self): + # get from global + tdDnodes = tdDnodes_Get() + dnodes = tdDnodes.dnodes + num = len(dnodes) + print(f" start dnode num={num} !") + for i in range(num): + dnode = dnodes[i] + print(f" dnode{i} deploay={dnode.deployed} ip={dnode.remoteIP} path={dnode.path}") + + print(" end !") + + # stop + def stop(self): + tdSql.close() + tdLog.success("%s successfully executed" % __file__) + +tdCases.addWindows(__file__, TDTestCase()) +tdCases.addLinux(__file__, TDTestCase()) From 89be6dbdebcdac5b0ea0c9d8537babe0bdf48a8d Mon Sep 17 00:00:00 2001 From: Alex Duan <417921451@qq.com> Date: Tue, 16 May 2023 19:07:16 +0800 Subject: [PATCH 3/8] test: reset dnodes modify and add test case --- tests/pytest/util/autogen.py | 4 +- tests/pytest/util/dnodes.py | 13 +- .../3-enterprise/restore/restore_basic.py | 215 +++++++++++++++++- tests/system-test/test.py | 4 - 4 files changed, 208 insertions(+), 28 deletions(-) diff --git a/tests/pytest/util/autogen.py b/tests/pytest/util/autogen.py index 90cd347b9a..d5f1faa3f7 100644 --- a/tests/pytest/util/autogen.py +++ b/tests/pytest/util/autogen.py @@ -93,9 +93,9 @@ class AutoGen: return ''.join(random.choice(letters) for i in range(count)) # create db - def create_db(self, dbname): + def create_db(self, dbname, vgroups = 2, replica = 1): self.dbname = dbname - tdSql.execute(f'create database {dbname}') + tdSql.execute(f'create database {dbname} vgroups {vgroups} replica {replica}') tdSql.execute(f'use {dbname}') # create table or stable diff --git a/tests/pytest/util/dnodes.py b/tests/pytest/util/dnodes.py index 48dae22773..543433b4ea 100644 --- a/tests/pytest/util/dnodes.py +++ b/tests/pytest/util/dnodes.py @@ -859,15 +859,4 @@ class TDDnodes: def getAsan(self): return self.asan -global tdDnodes -tdDnodes = TDDnodes() - -# global get -def tdDnodes_Get(): - global tdDnodes - return tdDnodes - -# global set -def tdDnodes_Set(newInst): - global tdDnodes - tdDnodes = newInst \ No newline at end of file +tdDnodes = TDDnodes() \ No newline at end of file diff --git a/tests/system-test/3-enterprise/restore/restore_basic.py b/tests/system-test/3-enterprise/restore/restore_basic.py index 8e9d43886b..75e538aa06 100644 --- a/tests/system-test/3-enterprise/restore/restore_basic.py +++ b/tests/system-test/3-enterprise/restore/restore_basic.py @@ -18,10 +18,14 @@ from util.sql import * from util.common import * from util.sqlset import * from util.dnodes import * +from util.autogen import * +from util.cluster import * import random import os import subprocess +import shutil +import time class TDTestCase: @@ -30,24 +34,215 @@ class TDTestCase: self.replicaVar = int(replicaVar) tdLog.debug("start to execute %s" % __file__) tdSql.init(conn.cursor()) + self.dnodes_num = 5 + # get from global + # test + self.dnodes = cluster.dnodes + num = len(self.dnodes) - # + if num != self.dnodes_num : + tdLog.exit(f" cluster dnode is not equal 5. num={num}") + return - - # run - def run(self): - # get from global - tdDnodes = tdDnodes_Get() - dnodes = tdDnodes.dnodes - num = len(dnodes) print(f" start dnode num={num} !") for i in range(num): - dnode = dnodes[i] - print(f" dnode{i} deploay={dnode.deployed} ip={dnode.remoteIP} path={dnode.path}") + dnode = self.dnodes[i] + print(f" dnode{i} dataDir={dnode.dataDir} ip={dnode.remoteIP} path={dnode.path}") print(" end !") + + # create data + def create_data(self): + gen = AutoGen() + gen.create_db(self.dbname, 8, 3) + gen.create_stable(self.stable, 5, 10, 8, 8) + gen.create_child(self.stable, "d", self.child_count) + gen.set_batch_size(1000) + gen.insert_data(self.insert_rows) + + for i in range(self.dnodes_num): + sql = f"create qnode on dnode {i+1}" + tdSql.execute(sql) + + + # status + def check_status_corrent(self): + # query + tdSql.query(f" show {self.dbname}.vgroups") + + # check 8 vgroups + tdSql.checkRows(8) + + # check data corrent + for i in range(8): + leader = False + for j in range(3): + status = tdSql.getData(i, 4 + j*2) + if status == "leader": + leader = True + elif status == "follower": + pass + else: + tdLog.info(f" check vgroups status not leader or follower. i={i} j={j} status={status}") + return False + + # check leader + if leader == False: + tdLog.info(f" check vgroups not found leader i={i} ") + return False + + # info + tdLog.info("check vgroups status successful.") + return True + + + + # check data corrent + def check_corrent(self): + # check status + status = False + for i in range(50): + if self.check_status_corrent(): + status = True + break + else: + time.sleep(0.2) + tdLog.info(f" sleep 200ms retry {i} to check status again...") + + if status == False: + tdLog.exit("check vgroups status failed, exit.") + + # check rows count + sql = f"select count(ts) from {self.dbname}.{self.stable}" + tdSql.query(sql) + tdSql.checkData(0, 0, self.child_count* self.insert_rows) + + + # restore dnode + def restore_dnode(self, index): + tdLog.info(f"start restore dnode {index}") + dnode = self.dnodes[index - 1] + + # stop dnode + tdLog.info(f"stop dnode {index}") + dnode.stoptaosd() + + # remove dnode folder + try: + shutil.rmtree(dnode.dataDir) + tdLog.info(f" delete dir {dnode.dataDir} successful") + except OSError as x: + tdLog.exit(f" remove path {dnode.dataDir} error : {x.strerror}") + + dnode.starttaosd() + + # exec restore + sql = f"restore dnode {index}" + tdSql.execute(sql) + self.check_corrent() + + # restore vnode + def restore_vnode(self, index): + tdLog.info(f"start restore vnode on dnode {index}") + dnode = self.dnodes[index - 1] + del_dir = f"{dnode.dataDir}/vnode" + + # stop dnode + tdLog.info(f"stop dnode {index}") + dnode.stoptaosd() + + # remove dnode folder + try: + shutil.rmtree(del_dir) + tdLog.info(f" delete dir {del_dir} successful") + except OSError as x: + tdLog.exit(f" remove path {del_dir} error : {x.strerror}") + + dnode.starttaosd() + + # exec restore + sql = f"restore vnode on dnode {index}" + tdSql.execute(sql) + + # check result + self.check_corrent() + + + # restore mnode + def restore_mnode(self, index): + tdLog.info(f"start restore mnode {index}") + dnode = self.dnodes[index - 1] + del_dir = f"{dnode.dataDir}/mnode" + + # stop dnode + tdLog.info(f"stop dnode {index}") + dnode.stoptaosd() + + # remove dnode folder + try: + shutil.rmtree(del_dir) + tdLog.info(f" delete dir {del_dir} successful") + except OSError as x: + tdLog.exit(f" remove path {del_dir} error : {x.strerror}") + + dnode.starttaosd() + + # exec restore + sql = f"restore mnode on dnode {index}" + tdSql.execute(sql) + self.check_corrent() + + + # restore qnode + def restore_qnode(self, index): + tdLog.info(f"start restore qnode on dnode {index}") + dnode = self.dnodes[index - 1] + del_dir = f"{dnode.dataDir}/qnode" + + # stop dnode + tdLog.info(f"stop dnode {index}") + dnode.stoptaosd() + + # remove dnode folder + try: + shutil.rmtree(del_dir) + tdLog.info(f" delete dir {del_dir} successful") + except OSError as x: + tdLog.exit(f" remove path {del_dir} error : {x.strerror}") + + # start dnode + dnode.starttaosd() + + # exec restore + sql = f"restore qnode on dnode {index}" + tdSql.execute(sql) + self.check_corrent() + + # path exist + qfile = f"{del_dir}/qnode.json" + if os.path.exists(qfile) == False: + tdLog.exit(f" qnode restore failed. qnode.json is not exist. {qfile}") + + + # run + def run(self): + + # create data + self.dbname = "db" + self.stable = "st" + self.child_count = 10 + self.insert_rows = 1000 + self.create_data() + + # remove dnode + index = 1 + self.restore_dnode(2) + self.restore_mnode(3) + self.restore_vnode(4) + self.restore_qnode(5) + # stop def stop(self): tdSql.close() diff --git a/tests/system-test/test.py b/tests/system-test/test.py index 1676aa04b6..7082bb0f22 100644 --- a/tests/system-test/test.py +++ b/tests/system-test/test.py @@ -385,8 +385,6 @@ if __name__ == "__main__": tdLog.debug("create an cluster with %s nodes and make %s dnode as independent mnode"%(dnodeNums,mnodeNums)) dnodeslist = cluster.configure_cluster(dnodeNums=dnodeNums, mnodeNums=mnodeNums, independentMnode=independentMnode) tdDnodes = ClusterDnodes(dnodeslist) - # set to global - tdDnodes_Set(tdDnodes) tdDnodes.init(deployPath, masterIp) tdDnodes.setTestCluster(testCluster) tdDnodes.setValgrind(valgrind) @@ -557,8 +555,6 @@ if __name__ == "__main__": tdLog.debug("create an cluster with %s nodes and make %s dnode as independent mnode"%(dnodeNums,mnodeNums)) dnodeslist = cluster.configure_cluster(dnodeNums=dnodeNums, mnodeNums=mnodeNums, independentMnode=independentMnode) tdDnodes = ClusterDnodes(dnodeslist) - # set to global - tdDnodes_Set(tdDnodes) tdDnodes.init(deployPath, masterIp) tdDnodes.setTestCluster(testCluster) tdDnodes.setValgrind(valgrind) From c47eb1867d59c2c1164875f3996c3468e93ba20e Mon Sep 17 00:00:00 2001 From: Alex Duan <417921451@qq.com> Date: Tue, 16 May 2023 19:30:35 +0800 Subject: [PATCH 4/8] test : all cases is passed --- .../3-enterprise/restore/restore_basic.py | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/tests/system-test/3-enterprise/restore/restore_basic.py b/tests/system-test/3-enterprise/restore/restore_basic.py index 75e538aa06..1a2cdef7fb 100644 --- a/tests/system-test/3-enterprise/restore/restore_basic.py +++ b/tests/system-test/3-enterprise/restore/restore_basic.py @@ -94,7 +94,7 @@ class TDTestCase: return False # info - tdLog.info("check vgroups status successful.") + tdLog.info("check vgroups status successfully.") return True @@ -103,13 +103,13 @@ class TDTestCase: def check_corrent(self): # check status status = False - for i in range(50): + for i in range(100): if self.check_status_corrent(): status = True break else: - time.sleep(0.2) - tdLog.info(f" sleep 200ms retry {i} to check status again...") + time.sleep(0.5) + tdLog.info(f"sleep 500ms retry {i} to check status again...") if status == False: tdLog.exit("check vgroups status failed, exit.") @@ -132,9 +132,9 @@ class TDTestCase: # remove dnode folder try: shutil.rmtree(dnode.dataDir) - tdLog.info(f" delete dir {dnode.dataDir} successful") + tdLog.info(f"delete dir {dnode.dataDir} successful") except OSError as x: - tdLog.exit(f" remove path {dnode.dataDir} error : {x.strerror}") + tdLog.exit(f"remove path {dnode.dataDir} error : {x.strerror}") dnode.starttaosd() @@ -156,9 +156,9 @@ class TDTestCase: # remove dnode folder try: shutil.rmtree(del_dir) - tdLog.info(f" delete dir {del_dir} successful") + tdLog.info(f"delete dir {del_dir} successful") except OSError as x: - tdLog.exit(f" remove path {del_dir} error : {x.strerror}") + tdLog.exit(f"remove path {del_dir} error : {x.strerror}") dnode.starttaosd() @@ -183,9 +183,9 @@ class TDTestCase: # remove dnode folder try: shutil.rmtree(del_dir) - tdLog.info(f" delete dir {del_dir} successful") + tdLog.info(f"delete dir {del_dir} successful") except OSError as x: - tdLog.exit(f" remove path {del_dir} error : {x.strerror}") + tdLog.exit(f"remove path {del_dir} error : {x.strerror}") dnode.starttaosd() @@ -208,9 +208,9 @@ class TDTestCase: # remove dnode folder try: shutil.rmtree(del_dir) - tdLog.info(f" delete dir {del_dir} successful") + tdLog.info(f"delete dir {del_dir} successful") except OSError as x: - tdLog.exit(f" remove path {del_dir} error : {x.strerror}") + tdLog.exit(f"remove path {del_dir} error : {x.strerror}") # start dnode dnode.starttaosd() @@ -223,7 +223,9 @@ class TDTestCase: # path exist qfile = f"{del_dir}/qnode.json" if os.path.exists(qfile) == False: - tdLog.exit(f" qnode restore failed. qnode.json is not exist. {qfile}") + tdLog.exit(f"qnode restore failed. qnode.json is not exist. {qfile}") + else: + tdLog.info(f"check qnode.json restore ok. {qfile}") # run From 88d56bcd4ec0ce8741906f7065115bed11afa2de Mon Sep 17 00:00:00 2001 From: Alex Duan <417921451@qq.com> Date: Wed, 17 May 2023 14:29:36 +0800 Subject: [PATCH 5/8] test: splite one case to four cases --- .../{restore_basic.py => restoreBasic.py} | 45 +++++-------------- .../3-enterprise/restore/restoreDnode.py | 41 +++++++++++++++++ .../3-enterprise/restore/restoreMnode.py | 42 +++++++++++++++++ .../3-enterprise/restore/restoreQnode.py | 41 +++++++++++++++++ .../3-enterprise/restore/restoreVnode.py | 41 +++++++++++++++++ 5 files changed, 175 insertions(+), 35 deletions(-) rename tests/system-test/3-enterprise/restore/{restore_basic.py => restoreBasic.py} (88%) create mode 100644 tests/system-test/3-enterprise/restore/restoreDnode.py create mode 100644 tests/system-test/3-enterprise/restore/restoreMnode.py create mode 100644 tests/system-test/3-enterprise/restore/restoreQnode.py create mode 100644 tests/system-test/3-enterprise/restore/restoreVnode.py diff --git a/tests/system-test/3-enterprise/restore/restore_basic.py b/tests/system-test/3-enterprise/restore/restoreBasic.py similarity index 88% rename from tests/system-test/3-enterprise/restore/restore_basic.py rename to tests/system-test/3-enterprise/restore/restoreBasic.py index 1a2cdef7fb..0f91916a34 100644 --- a/tests/system-test/3-enterprise/restore/restore_basic.py +++ b/tests/system-test/3-enterprise/restore/restoreBasic.py @@ -28,11 +28,10 @@ import shutil import time -class TDTestCase: +class RestoreBasic: # init def init(self, conn, logSql, replicaVar=1): self.replicaVar = int(replicaVar) - tdLog.debug("start to execute %s" % __file__) tdSql.init(conn.cursor()) self.dnodes_num = 5 @@ -41,17 +40,15 @@ class TDTestCase: self.dnodes = cluster.dnodes num = len(self.dnodes) - if num != self.dnodes_num : - tdLog.exit(f" cluster dnode is not equal 5. num={num}") - return - - print(f" start dnode num={num} !") - for i in range(num): - dnode = self.dnodes[i] - print(f" dnode{i} dataDir={dnode.dataDir} ip={dnode.remoteIP} path={dnode.path}") - - print(" end !") + if num < self.dnodes_num : + tdLog.exit(f" cluster dnode is less than {self.dnodes_num}. num={num}") + # create data + self.dbname = "db" + self.stable = "st" + self.child_count = 100 + self.insert_rows = 10000 + self.create_data() # create data def create_data(self): @@ -97,8 +94,6 @@ class TDTestCase: tdLog.info("check vgroups status successfully.") return True - - # check data corrent def check_corrent(self): # check status @@ -226,29 +221,9 @@ class TDTestCase: tdLog.exit(f"qnode restore failed. qnode.json is not exist. {qfile}") else: tdLog.info(f"check qnode.json restore ok. {qfile}") - - # run - def run(self): - - # create data - self.dbname = "db" - self.stable = "st" - self.child_count = 10 - self.insert_rows = 1000 - self.create_data() - - # remove dnode - index = 1 - self.restore_dnode(2) - self.restore_mnode(3) - self.restore_vnode(4) - self.restore_qnode(5) - # stop def stop(self): tdSql.close() - tdLog.success("%s successfully executed" % __file__) -tdCases.addWindows(__file__, TDTestCase()) -tdCases.addLinux(__file__, TDTestCase()) + diff --git a/tests/system-test/3-enterprise/restore/restoreDnode.py b/tests/system-test/3-enterprise/restore/restoreDnode.py new file mode 100644 index 0000000000..b92c823764 --- /dev/null +++ b/tests/system-test/3-enterprise/restore/restoreDnode.py @@ -0,0 +1,41 @@ +################################################################### +# 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 + +from util.log import * +from util.cases import * +from util.sql import * +from util.common import * +sys.path.append("./3-enterprise/restore") +from restoreBasic import * + + +class TDTestCase: + # init + def init(self, conn, logSql, replicaVar=1): + tdLog.debug("start to execute %s" % __file__) + self.basic = RestoreBasic() + self.basic.init(conn, logSql, replicaVar) + + # run + def run(self): + self.basic.restore_dnode(2) + + # stop + def stop(self): + self.basic.stop() + tdLog.success("%s successfully executed" % __file__) + +tdCases.addWindows(__file__, TDTestCase()) +tdCases.addLinux(__file__, TDTestCase()) diff --git a/tests/system-test/3-enterprise/restore/restoreMnode.py b/tests/system-test/3-enterprise/restore/restoreMnode.py new file mode 100644 index 0000000000..3f3ccb8a5f --- /dev/null +++ b/tests/system-test/3-enterprise/restore/restoreMnode.py @@ -0,0 +1,42 @@ +################################################################### +# 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 + +from util.log import * +from util.cases import * +from util.sql import * +from util.common import * +sys.path.append("./3-enterprise/restore") +from restoreBasic import * + + + +class TDTestCase: + # init + def init(self, conn, logSql, replicaVar=1): + tdLog.debug("start to execute %s" % __file__) + self.basic = RestoreBasic() + self.basic.init(conn, logSql, replicaVar) + + # run + def run(self): + self.basic.restore_mnode(3) + + # stop + def stop(self): + self.basic.stop() + tdLog.success("%s successfully executed" % __file__) + +tdCases.addWindows(__file__, TDTestCase()) +tdCases.addLinux(__file__, TDTestCase()) diff --git a/tests/system-test/3-enterprise/restore/restoreQnode.py b/tests/system-test/3-enterprise/restore/restoreQnode.py new file mode 100644 index 0000000000..d2136523e8 --- /dev/null +++ b/tests/system-test/3-enterprise/restore/restoreQnode.py @@ -0,0 +1,41 @@ +################################################################### +# 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 + +from util.log import * +from util.cases import * +from util.sql import * +from util.common import * +sys.path.append("./3-enterprise/restore") +from restoreBasic import * + + +class TDTestCase: + # init + def init(self, conn, logSql, replicaVar=1): + tdLog.debug("start to execute %s" % __file__) + self.basic = RestoreBasic() + self.basic.init(conn, logSql, replicaVar) + + # run + def run(self): + self.basic.restore_qnode(5) + + # stop + def stop(self): + self.basic.stop() + tdLog.success("%s successfully executed" % __file__) + +tdCases.addWindows(__file__, TDTestCase()) +tdCases.addLinux(__file__, TDTestCase()) diff --git a/tests/system-test/3-enterprise/restore/restoreVnode.py b/tests/system-test/3-enterprise/restore/restoreVnode.py new file mode 100644 index 0000000000..57e95e34c3 --- /dev/null +++ b/tests/system-test/3-enterprise/restore/restoreVnode.py @@ -0,0 +1,41 @@ +################################################################### +# 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 + +from util.log import * +from util.cases import * +from util.sql import * +from util.common import * +sys.path.append("./3-enterprise/restore") +from restoreBasic import * + + +class TDTestCase: + # init + def init(self, conn, logSql, replicaVar=1): + tdLog.debug("start to execute %s" % __file__) + self.basic = RestoreBasic() + self.basic.init(conn, logSql, replicaVar) + + # run + def run(self): + self.basic.restore_dnode(4) + + # stop + def stop(self): + self.basic.stop() + tdLog.success("%s successfully executed" % __file__) + +tdCases.addWindows(__file__, TDTestCase()) +tdCases.addLinux(__file__, TDTestCase()) From 0f22718c8914bab3ffd98b86011c8c116d0edb37 Mon Sep 17 00:00:00 2001 From: Alex Duan <417921451@qq.com> Date: Wed, 17 May 2023 14:32:39 +0800 Subject: [PATCH 6/8] test: splite one case to four cases --- tests/parallel_test/cases.task | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/parallel_test/cases.task b/tests/parallel_test/cases.task index 3e656c0302..2c3bc37611 100644 --- a/tests/parallel_test/cases.task +++ b/tests/parallel_test/cases.task @@ -479,6 +479,11 @@ ,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/slimit.py -Q 3 ,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/slimit.py -Q 4 +,,y,system-test,./pytest.sh python3 ./test.py -f 3-enterprise/restore/restoreDnode.py -N 5 -M 3 +,,y,system-test,./pytest.sh python3 ./test.py -f 3-enterprise/restore/restoreVnode.py -N 5 -M 3 +,,y,system-test,./pytest.sh python3 ./test.py -f 3-enterprise/restore/restoreMnode.py -N 5 -M 3 +,,y,system-test,./pytest.sh python3 ./test.py -f 3-enterprise/restore/restoreQnode.py -N 5 -M 3 + ,,y,system-test,./pytest.sh python3 ./test.py -f 7-tmq/create_wrong_topic.py ,,y,system-test,./pytest.sh python3 ./test.py -f 7-tmq/dropDbR3ConflictTransaction.py -N 3 ,,y,system-test,./pytest.sh python3 ./test.py -f 7-tmq/basic5.py From 0dbc60493f3aef8aa9a6e9006817113f456a8894 Mon Sep 17 00:00:00 2001 From: Alex Duan <417921451@qq.com> Date: Wed, 17 May 2023 16:36:59 +0800 Subject: [PATCH 7/8] test: add flush database --- tests/system-test/3-enterprise/restore/restoreBasic.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/system-test/3-enterprise/restore/restoreBasic.py b/tests/system-test/3-enterprise/restore/restoreBasic.py index 0f91916a34..af1df0e3f4 100644 --- a/tests/system-test/3-enterprise/restore/restoreBasic.py +++ b/tests/system-test/3-enterprise/restore/restoreBasic.py @@ -58,6 +58,10 @@ class RestoreBasic: gen.create_child(self.stable, "d", self.child_count) gen.set_batch_size(1000) gen.insert_data(self.insert_rows) + + tdSql.execute(f"flush database {self.dbname}") + # put some duplicate ts on wal + gen.insert_data(self.insert_rows%100) for i in range(self.dnodes_num): sql = f"create qnode on dnode {i+1}" @@ -135,6 +139,7 @@ class RestoreBasic: # exec restore sql = f"restore dnode {index}" + tdLog.info(sql) tdSql.execute(sql) self.check_corrent() From 9a9e7fa53c1cb19d901087c1d25af7454f0d37bb Mon Sep 17 00:00:00 2001 From: Alex Duan <417921451@qq.com> Date: Wed, 17 May 2023 16:57:34 +0800 Subject: [PATCH 8/8] test: add restore command print info --- tests/system-test/3-enterprise/restore/restoreBasic.py | 3 +++ tests/system-test/3-enterprise/restore/restoreVnode.py | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/system-test/3-enterprise/restore/restoreBasic.py b/tests/system-test/3-enterprise/restore/restoreBasic.py index af1df0e3f4..485f896f05 100644 --- a/tests/system-test/3-enterprise/restore/restoreBasic.py +++ b/tests/system-test/3-enterprise/restore/restoreBasic.py @@ -164,6 +164,7 @@ class RestoreBasic: # exec restore sql = f"restore vnode on dnode {index}" + tdLog.info(sql) tdSql.execute(sql) # check result @@ -191,6 +192,7 @@ class RestoreBasic: # exec restore sql = f"restore mnode on dnode {index}" + tdLog.info(sql) tdSql.execute(sql) self.check_corrent() @@ -217,6 +219,7 @@ class RestoreBasic: # exec restore sql = f"restore qnode on dnode {index}" + tdLog.info(sql) tdSql.execute(sql) self.check_corrent() diff --git a/tests/system-test/3-enterprise/restore/restoreVnode.py b/tests/system-test/3-enterprise/restore/restoreVnode.py index 57e95e34c3..9f5b7f5606 100644 --- a/tests/system-test/3-enterprise/restore/restoreVnode.py +++ b/tests/system-test/3-enterprise/restore/restoreVnode.py @@ -30,7 +30,7 @@ class TDTestCase: # run def run(self): - self.basic.restore_dnode(4) + self.basic.restore_vnode(4) # stop def stop(self):