test: migrate cases (#30972)

This commit is contained in:
Simon Guan 2025-05-04 22:31:35 +08:00 committed by GitHub
parent 7453cce50b
commit e15b65fb52
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 678 additions and 99 deletions

View file

@ -14,7 +14,7 @@ class TestDnodeAlterDebugFlag:
3. 修改不在线 dnode 参数报错
Catalog:
- Tables
- ManageNodes:Dnode
Since: v3.0.0.0

View file

@ -0,0 +1,84 @@
import time
from new_test_framework.utils import tdLog, tdSql, sc, clusterComCheck
class TestMnodeBasic1:
def setup_class(cls):
tdLog.debug(f"start to execute {__file__}")
def test_mnode_basic1(self):
"""mnode basic 1
1. -
Catalog:
- ManageNodes:Mnode
Since: v3.0.0.0
Labels: common,ci
Jira: None
History:
- 2025-5-5 Simon Guan Migrated to new test framework, from tsim/mnode/basic1.sim
"""
clusterComCheck.checkDnodes(2)
tdSql.query(f"select * from information_schema.ins_mnodes")
tdSql.checkRows(1)
tdSql.checkKeyData(1, 0, 1)
tdSql.checkKeyData(1, 2, "leader")
tdSql.error(f"create mnode on dnode 1")
tdSql.error(f"drop mnode on dnode 1")
tdLog.info(f"=============== create mnode 2")
tdSql.execute(f"create mnode on dnode 2")
tdLog.info(f"=============== create mnode 2 finished")
checkFailed = True
for i in range(20):
time.sleep(1)
tdSql.query(f"select * from information_schema.ins_mnodes")
tdSql.checkRows(2)
tdSql.checkKeyData(1, 0, 1)
tdSql.checkKeyData(1, 2, "leader")
tdSql.checkKeyData(2, 0, 2)
if tdSql.expectKeyData(2, 2, "follower"):
checkFailed = False
break
if checkFailed:
tdSql.checkAssert(False)
tdLog.info(f"============ drop mnode 2")
tdSql.execute(f"drop mnode on dnode 2")
tdLog.info(f"============ drop mnode 2 finished")
tdSql.query(f"select * from information_schema.ins_mnodes")
tdSql.checkRows(1)
tdSql.checkKeyData(1, 0, 1)
tdSql.checkKeyData(1, 2, "leader")
tdSql.error(f"drop mnode on dnode 2")
tdLog.info(f"=============== create mnodes")
tdSql.execute(f"create mnode on dnode 2")
tdLog.info(f"=============== create mnode 2 finished")
checkFailed = True
for i in range(20):
time.sleep(1)
tdSql.query(f"select * from information_schema.ins_mnodes")
tdSql.checkRows(2)
tdSql.checkKeyData(1, 0, 1)
tdSql.checkKeyData(1, 2, "leader")
tdSql.checkKeyData(2, 0, 2)
if tdSql.expectKeyData(2, 2, "follower"):
checkFailed = False
break
if checkFailed:
tdSql.checkAssert(False)

View file

@ -0,0 +1,85 @@
import time
from new_test_framework.utils import tdLog, tdSql, sc, clusterComCheck
class TestMnodeBasic2:
def setup_class(cls):
tdLog.debug(f"start to execute {__file__}")
def test_mnode_basic2(self):
"""mnode basic 2
1. -
Catalog:
- ManageNodes:Mnode
Since: v3.0.0.0
Labels: common,ci
Jira: None
History:
- 2025-5-5 Simon Guan Migrated to new test framework, from tsim/mnode/basic2.sim
"""
clusterComCheck.checkDnodes(2)
tdSql.query(f"select * from information_schema.ins_mnodes")
tdSql.checkRows(1)
tdSql.checkKeyData(1, 0, 1)
tdSql.checkKeyData(1, 2, "leader")
tdLog.info(f"=============== create mnode 2")
tdSql.execute(f"create mnode on dnode 2")
checkFailed = True
for i in range(20):
time.sleep(1)
tdSql.query(f"select * from information_schema.ins_mnodes")
tdSql.checkRows(2)
tdSql.checkKeyData(1, 0, 1)
tdSql.checkKeyData(1, 2, "leader")
tdSql.checkKeyData(2, 0, 2)
if tdSql.expectKeyData(2, 2, "follower"):
checkFailed = False
break
if checkFailed:
tdSql.checkAssert(False)
tdLog.info(f"=============== create user")
tdSql.execute(f"create user user1 PASS 'user1@#xy'")
tdSql.query(f"select * from information_schema.ins_users")
tdSql.checkRows(2)
tdSql.execute(f"create database db")
tdSql.query(f"select * from information_schema.ins_databases")
tdSql.checkRows(3)
tdLog.info(f"=============== restart")
sc.dnodeStop(1)
sc.dnodeStop(2)
sc.dnodeStart(1)
sc.dnodeStart(2)
clusterComCheck.checkDnodes(2)
tdSql.query(f"select * from information_schema.ins_mnodes")
tdSql.checkRows(2)
tdSql.query(f"select * from information_schema.ins_users")
tdSql.checkRows(2)
tdSql.query(f"select * from information_schema.ins_databases")
tdSql.checkRows(3)
tdLog.info(f"=============== insert data")
tdSql.execute(
f'create table db.stb (ts timestamp, c1 int, c2 binary(4)) tags(t1 int, t2 float, t3 binary(16)) comment "abd"'
)
tdSql.execute(f'create table db.ctb using db.stb tags(101, 102, "103")')
tdSql.execute(f'insert into db.ctb values(now, 1, "2")')
tdSql.query(f"select * from db.ctb")
tdSql.checkRows(1)

View file

@ -0,0 +1,76 @@
import time
from new_test_framework.utils import tdLog, tdSql, sc, clusterComCheck
class TestMnodeBasic3:
def setup_class(cls):
tdLog.debug(f"start to execute {__file__}")
def test_mnode_basic3(self):
"""mnode basic 3
1. -
Catalog:
- ManageNodes:Mnode
Since: v3.0.0.0
Labels: common,ci
Jira: None
History:
- 2025-5-5 Simon Guan Migrated to new test framework, from tsim/mnode/basic3.sim
"""
clusterComCheck.checkDnodes(4)
tdSql.query(f"select * from information_schema.ins_mnodes")
tdSql.checkRows(1)
tdSql.checkKeyData(1, 0, 1)
tdSql.checkKeyData(1, 2, "leader")
tdLog.info(f"=============== step2: create mnode 2 3")
tdSql.execute(f"create mnode on dnode 2")
tdSql.execute(f"create mnode on dnode 3")
tdSql.error(f"create mnode on dnode 4")
clusterComCheck.checkMnodeStatus(3)
tdLog.info(f"=============== step3: create user")
tdSql.execute(f"create user user1 PASS 'user121$*'")
tdSql.query(f"select * from information_schema.ins_users")
tdSql.checkRows(2)
# wait mnode2 mnode3 recv data finish
time.sleep(5)
tdLog.info(f"=============== step4: stop dnode1")
sc.dnodeForceStop(1)
time.sleep(1)
clusterComCheck.checkDnodes(3)
tdSql.query(f"select * from information_schema.ins_users")
tdSql.checkRows(2)
tdLog.info(f"=============== step5: stop dnode2")
sc.dnodeStart(1)
sc.dnodeStop(2)
time.sleep(1)
clusterComCheck.checkDnodes(3)
tdSql.query(f"select * from information_schema.ins_users")
tdSql.checkRows(2)
tdLog.info(f"=============== step6: stop dnode3")
sc.dnodeStart(2)
sc.dnodeStop(3)
time.sleep(1)
clusterComCheck.checkDnodes(3)
tdSql.query(f"select * from information_schema.ins_users")
tdSql.checkRows(2)

View file

@ -0,0 +1,63 @@
import time
from new_test_framework.utils import tdLog, tdSql, sc, clusterComCheck
class TestMnodeBasic4:
def setup_class(cls):
tdLog.debug(f"start to execute {__file__}")
def test_mnode_basic4(self):
"""mnode basic 4
1. -
Catalog:
- ManageNodes:Mnode
Since: v3.0.0.0
Labels: common,ci
Jira: None
History:
- 2025-5-5 Simon Guan Migrated to new test framework, from tsim/mnode/basic4.sim
"""
clusterComCheck.checkDnodes(3)
sc.dnodeStop(3)
clusterComCheck.checkDnodes(2)
tdLog.info(f"=============== step2: create mnode 2")
tdSql.execute(f"create mnode on dnode 2")
tdSql.error(f"create mnode on dnode 3")
sc.dnodeStart(3)
clusterComCheck.checkDnodes(3)
tdLog.info(f"=============== step4: create mnode 3")
tdSql.execute(f"create mnode on dnode 3")
clusterComCheck.checkMnodeStatus(3)
tdLog.info(f"=============== step5: drop mnode 3 and stop dnode3")
sc.dnodeForceStop(3)
clusterComCheck.checkDnodes(2)
tdSql.error(f"drop mnode on dnode 3")
tdLog.info(f"=============== step6: start dnode3")
sc.dnodeStart(3)
clusterComCheck.checkDnodes(3)
tdSql.query("select * from information_schema.ins_mnodes;")
tdSql.checkRows(3)
if tdSql.getData(0, 2) == "leader":
tdLog.info(f"drop mnode on dnode {tdSql.getData(0,0)}")
tdSql.error(f"drop mnode on dnode {tdSql.getData(0,0)}")
elif tdSql.getData(1, 2) == "leader":
tdLog.info(f"drop mnode on dnode {tdSql.getData(0,0)}")
tdSql.error(f"drop mnode on dnode {tdSql.getData(0,0)}")
elif tdSql.getData(2, 2) == "leader":
tdLog.info(f"drop mnode on dnode {tdSql.getData(0,0)}")
tdSql.error(f"drop mnode on dnode {tdSql.getData(0,0)}")

View file

@ -0,0 +1,131 @@
import time
from new_test_framework.utils import tdLog, tdSql, sc, clusterComCheck
class TestMnodeBasic5:
def setup_class(cls):
tdLog.debug(f"start to execute {__file__}")
def test_mnode_basic5(self):
"""mnode basic 5
1. -
Catalog:
- ManageNodes:Mnode
Since: v3.0.0.0
Labels: common,ci
Jira: None
History:
- 2025-5-5 Simon Guan Migrated to new test framework, from tsim/mnode/basic5.sim
"""
tdLog.info(f"=============== step1: create dnodes")
clusterComCheck.checkDnodes(4)
sc.dnodeStop(2)
sc.dnodeStop(3)
sc.dnodeStop(4)
clusterComCheck.checkDnodes(1)
tdLog.info(f"=============== step2: create dnodes - with error")
tdSql.error(f"create mnode on dnode 1;")
tdSql.error(f"create mnode on dnode 2;")
tdSql.error(f"create mnode on dnode 3;")
tdSql.error(f"create mnode on dnode 4;")
tdSql.error(f"create mnode on dnode 5;")
tdSql.error(f"create mnode on dnode 6;")
tdLog.info(f"=============== step3: create mnode 2 and 3")
sc.dnodeStart(2)
sc.dnodeStart(3)
sc.dnodeStart(4)
clusterComCheck.checkDnodes(4)
tdSql.execute(f"create mnode on dnode 2")
tdSql.execute(f"create mnode on dnode 3")
clusterComCheck.checkMnodeStatus(3)
tdLog.info(f"=============== step4: create dnodes - with error")
tdSql.error(f"create mnode on dnode 1")
tdSql.error(f"create mnode on dnode 2;")
tdSql.error(f"create mnode on dnode 3;")
tdSql.error(f"create mnode on dnode 4;")
tdSql.error(f"create mnode on dnode 5;")
tdSql.error(f"create mnode on dnode 6;")
tdLog.info(f"=============== step5: drop mnodes - with error")
tdSql.error(f"drop mnode on dnode 1")
tdSql.error(f"drop mnode on dnode 4")
tdSql.error(f"drop mnode on dnode 5")
tdSql.error(f"drop mnode on dnode 6")
sc.dnodeStop(2)
clusterComCheck.checkDnodes(3)
clusterComCheck.checkMnodeStatus(3, False)
tdSql.query(f"select * from information_schema.ins_dnodes")
tdSql.checkKeyData(1, 4, "ready")
tdSql.checkKeyData(2, 4, "offline")
tdSql.checkKeyData(3, 4, "ready")
tdSql.checkKeyData(4, 4, "ready")
sc.dnodeStart(2)
clusterComCheck.checkDnodes(4)
tdSql.query(f"select * from information_schema.ins_dnodes")
tdSql.checkKeyData(1, 4, "ready")
tdSql.checkKeyData(2, 4, "ready")
tdSql.checkKeyData(3, 4, "ready")
tdSql.checkKeyData(4, 4, "ready")
tdLog.info(f"=============== step6: stop mnode1")
sc.dnodeStop(1)
clusterComCheck.checkDnodes(3)
clusterComCheck.checkMnodeStatus(3, False)
tdLog.info(f"=============== step7: start mnode1 and wait it online")
sc.dnodeStart(1)
clusterComCheck.checkDnodes(4)
tdSql.query(f"select * from information_schema.ins_dnodes")
tdSql.checkKeyData(1, 4, "ready")
tdSql.checkKeyData(2, 4, "ready")
tdSql.checkKeyData(3, 4, "ready")
tdSql.checkKeyData(4, 4, "ready")
clusterComCheck.checkMnodeStatus(3)
tdLog.info(f"=============== step8: stop mnode1 and drop it")
sc.dnodeStop(1)
clusterComCheck.checkDnodes(3)
tdSql.query(f"select * from information_schema.ins_dnodes")
tdSql.checkKeyData(1, 4, "offline")
tdSql.checkKeyData(2, 4, "ready")
tdSql.checkKeyData(3, 4, "ready")
tdSql.checkKeyData(4, 4, "ready")
tdLog.info(f"=============== step9: start mnode1 and wait it dropped")
tdLog.info(f"check mnode has leader step9a")
clusterComCheck.checkMnodeStatus(3, False)
tdLog.info(f"start dnode1 step9b")
sc.dnodeStart(1)
clusterComCheck.checkDnodes(4)
clusterComCheck.checkMnodeStatus(3)
tdLog.info(f"drop mnode step9d")
tdSql.execute(f"drop mnode on dnode 1")
clusterComCheck.checkMnodeStatus(2)
tdSql.query(f"select * from information_schema.ins_mnodes")
tdSql.checkRows(2)
tdLog.info(f"=============== stepa: create mnode1 again")
tdSql.execute(f"create mnode on dnode 1")
clusterComCheck.checkMnodeStatus(3)
clusterComCheck.checkDnodes(4)

View file

@ -0,0 +1,113 @@
import time
from new_test_framework.utils import tdLog, tdSql, sc, clusterComCheck
class TestMnodeBasic6:
def setup_class(cls):
tdLog.debug(f"start to execute {__file__}")
def test_mnode_basic6(self):
"""mnode basic 6
1. -
Catalog:
- ManageNodes:Mnode
Since: v3.0.0.0
Labels: common,ci
Jira: None
History:
- 2025-5-5 Simon Guan Migrated to new test framework, from tsim/mnode/basic6.sim
"""
clusterComCheck.checkDnodes(4)
sc.dnodeStop(2)
sc.dnodeStop(3)
sc.dnodeStop(4)
clusterComCheck.checkDnodes(1)
tdLog.info(f"=============== step2: create dnodes - with error")
tdSql.error(f"create mnode on dnode 1;")
tdSql.error(f"create mnode on dnode 2;")
tdSql.error(f"create mnode on dnode 3;")
tdSql.error(f"create mnode on dnode 4;")
tdSql.error(f"create mnode on dnode 5;")
tdSql.error(f"create mnode on dnode 6;")
tdLog.info(f"=============== step3: create mnode 2 and 3")
sc.dnodeStart(2)
sc.dnodeStart(3)
sc.dnodeStart(4)
clusterComCheck.checkDnodes(4)
tdSql.execute(f"create mnode on dnode 2")
tdSql.execute(f"create mnode on dnode 3")
clusterComCheck.checkMnodeStatus(3)
tdLog.info(f"=============== step4: create dnodes - with error")
tdSql.error(f"create mnode on dnode 1")
tdSql.error(f"create mnode on dnode 2;")
tdSql.error(f"create mnode on dnode 3;")
tdSql.error(f"create mnode on dnode 4;")
tdSql.error(f"create mnode on dnode 5;")
tdSql.error(f"create mnode on dnode 6;")
tdLog.info(f"=============== step5: drop mnodes - with error")
tdSql.error(f"drop mnode on dnode 1")
tdSql.error(f"drop mnode on dnode 4")
tdSql.error(f"drop mnode on dnode 5")
tdSql.error(f"drop mnode on dnode 6")
sc.dnodeStop(2)
clusterComCheck.checkDnodes(3)
clusterComCheck.checkMnodeStatus(3, False)
tdSql.error(f"drop mnode on dnode 2")
sc.dnodeStart(2)
clusterComCheck.checkDnodes(4)
clusterComCheck.checkMnodeStatus(3)
tdLog.info(f"=============== step6: stop mnode1")
sc.dnodeStop(1)
clusterComCheck.checkDnodes(3)
clusterComCheck.checkMnodeStatus(3, False)
tdLog.info(f"=============== step7: start mnode1 and wait it online")
sc.dnodeStart(1)
clusterComCheck.checkDnodes(4)
clusterComCheck.checkMnodeStatus(3)
tdLog.info(f"=============== step8: stop mnode1 and drop it")
sc.dnodeStop(1)
clusterComCheck.checkDnodes(3)
tdLog.info(f"=============== step9: start mnode1 and wait it dropped")
tdLog.info(f"check mnode has leader step9a")
clusterComCheck.checkMnodeStatus(3, False)
tdLog.info(f"start dnode1 step9b")
sc.dnodeStart(1)
clusterComCheck.checkDnodes(4)
clusterComCheck.checkMnodeStatus(3)
tdLog.info(f"drop mnode step9d")
tdSql.execute(f"drop mnode on dnode 1")
clusterComCheck.checkMnodeStatus(2)
tdLog.info(f"check mnode leader")
tdSql.query(f"select * from information_schema.ins_mnodes")
tdSql.checkRows(2)
tdLog.info(f"=============== stepa: create mnode1 again")
tdSql.execute(f"create mnode on dnode 1")
clusterComCheck.checkMnodeStatus(3)
tdLog.info(f"check mnode leader")
tdSql.query(f"select * from information_schema.ins_mnodes")
tdSql.checkRows(3)
clusterComCheck.checkDnodes(4)

View file

@ -290,7 +290,15 @@
# 18-ReservedKeywords
# 19-ManageNodes
,,y,.,./ci/pytest.sh pytest cases/19-ManageNodes/test_dnode_alter_debugflag.py
## 01-Dnode
,,y,.,./ci/pytest.sh pytest cases/19-ManageNodes/01-Dnode/test_dnode_alter_debugflag.py
## 02-Mnode
,,y,.,./ci/pytest.sh pytest cases/19-ManageNodes/02-Mnode/test_mnode_basic1.py -N 2
,,y,.,./ci/pytest.sh pytest cases/19-ManageNodes/02-Mnode/test_mnode_basic2.py -N 2
,,y,.,./ci/pytest.sh pytest cases/19-ManageNodes/02-Mnode/test_mnode_basic3.py -N 4
,,y,.,./ci/pytest.sh pytest cases/19-ManageNodes/02-Mnode/test_mnode_basic4.py -N 3
,,y,.,./ci/pytest.sh pytest cases/19-ManageNodes/02-Mnode/test_mnode_basic5.py -N 4
,,y,.,./ci/pytest.sh pytest cases/19-ManageNodes/02-Mnode/test_mnode_basic6.py -N 4
# 20-Metadata

View file

@ -36,7 +36,7 @@ class ClusterComCheck:
tdSql.init(conn.cursor())
# tdSql.init(conn.cursor(), logSql) # output sql.txt file
def checkDnodes(self, dnodeNumbers, timeout=100):
def checkDnodes(self, dnodeNum, timeout=100):
count = 0
while count < timeout:
@ -46,12 +46,11 @@ class ClusterComCheck:
if tdSql.queryResult[i][4] == "ready":
status += 1
if status == dnodeNumbers:
tdLog.success(
"cluster with %d dnodes is ready within %ds!"
% (dnodeNumbers, count + 1)
)
if status == dnodeNum:
tdLog.success(f"{dnodeNum} dnodes ready within {count}s!")
return True
else:
tdLog.info(f"{dnodeNum} dnodes not ready, {status}:{tdSql.queryRows}")
time.sleep(1)
count += 1
@ -59,9 +58,7 @@ class ClusterComCheck:
else:
tdSql.query("select * from information_schema.ins_dnodes")
tdLog.debug(tdSql.queryResult)
tdLog.exit(
"cluster with %d dnodes not ready within %ds!" % (dnodeNumbers, timeout)
)
tdLog.exit(f"{dnodeNum} dnodes not ready within {timeout}s!")
def checkClusterAlive(self, status, timeout=100):
count = 0
@ -254,103 +251,79 @@ class ClusterComCheck:
tdSql.checkData(0, 0, rowsPerSTable)
return
def checkMnodeStatus(self, mnodeNums):
self.mnodeNums = int(mnodeNums)
# self.leaderDnode=int(leaderDnode)
tdLog.debug("start to check status of mnodes")
def checkMnodeStatus(self, mnodeNum, checkFollower = True):
tdLog.debug(f"check mnodes:{mnodeNum} status")
count = 0
while count < 10:
while count < 30:
time.sleep(1)
tdSql.query("select * from information_schema.ins_mnodes;")
if tdSql.checkRows(self.mnodeNums):
tdLog.success("cluster has %d mnodes" % self.mnodeNums)
if tdSql.checkRows(mnodeNum):
tdLog.success("cluster has %d mnodes" % mnodeNum)
if self.mnodeNums == 1:
if (
tdSql.queryResult[0][2] == "leader"
and tdSql.queryResult[0][3] == "ready"
):
tdLog.success("%d mnodes is ready in 10s" % self.mnodeNums)
if mnodeNum == 1:
tdLog.info(f"{tdSql.queryResult[0][2]}")
if tdSql.queryResult[0][2] == "leader":
tdLog.success(f"{mnodeNum} mnodes ready in {count}s")
return True
count += 1
elif self.mnodeNums == 3:
if (
tdSql.queryResult[0][2] == "leader"
and tdSql.queryResult[0][3] == "ready"
):
if (
tdSql.queryResult[1][2] == "follower"
and tdSql.queryResult[1][3] == "ready"
):
if (
tdSql.queryResult[2][2] == "follower"
and tdSql.queryResult[2][3] == "ready"
):
tdLog.success("%d mnodes is ready in 10s" % self.mnodeNums)
elif mnodeNum == 3:
tdLog.info(
f"{tdSql.queryResult[0][2]}, {tdSql.queryResult[1][2]}, {tdSql.queryResult[2][2]}"
)
if tdSql.queryResult[0][2] == "leader":
if not checkFollower:
tdLog.success(f"{mnodeNum} mnodes ready in {count}s")
return True
elif tdSql.queryResult[1][2] == "follower":
if tdSql.queryResult[2][2] == "follower":
tdLog.success(f"{mnodeNum} mnodes ready in {count}s")
return True
elif (
tdSql.queryResult[1][2] == "leader"
and tdSql.queryResult[1][3] == "ready"
):
if (
tdSql.queryResult[0][2] == "follower"
and tdSql.queryResult[0][3] == "ready"
):
if (
tdSql.queryResult[2][2] == "follower"
and tdSql.queryResult[2][3] == "ready"
):
tdLog.success("%d mnodes is ready in 10s" % self.mnodeNums)
elif tdSql.queryResult[1][2] == "leader":
if not checkFollower:
tdLog.success(f"{mnodeNum} mnodes ready in {count}s")
return True
elif tdSql.queryResult[0][2] == "follower":
if tdSql.queryResult[2][2] == "follower":
tdLog.success(f"{mnodeNum} mnodes ready in {count}s")
return True
elif (
tdSql.queryResult[2][2] == "leader"
and tdSql.queryResult[2][3] == "ready"
):
if (
tdSql.queryResult[0][2] == "follower"
and tdSql.queryResult[0][3] == "ready"
):
if (
tdSql.queryResult[1][2] == "follower"
and tdSql.queryResult[1][3] == "ready"
):
tdLog.success("%d mnodes is ready in 10s" % self.mnodeNums)
elif tdSql.queryResult[2][2] == "leader":
if not checkFollower:
tdLog.success(f"{mnodeNum} mnodes ready in {count}s")
return True
elif tdSql.queryResult[0][2] == "follower":
if tdSql.queryResult[1][2] == "follower":
tdLog.success(f"{mnodeNum} mnodes ready in {count}s")
return True
count += 1
elif self.mnodeNums == 2:
if (
tdSql.queryResult[0][2] == "leader"
and tdSql.queryResult[0][3] == "ready"
):
if (
tdSql.queryResult[1][2] == "follower"
and tdSql.queryResult[1][3] == "ready"
):
tdLog.success("%d mnodes is ready in 10s" % self.mnodeNums)
elif mnodeNum == 2:
tdLog.info(f"{tdSql.queryResult[0][2]}, {tdSql.queryResult[1][2]}")
if tdSql.queryResult[0][2] == "leader":
if not checkFollower:
tdLog.success(f"{mnodeNum} mnodes ready in {count}s")
return True
elif (
tdSql.queryResult[1][2] == "leader"
and tdSql.queryResult[1][3] == "ready"
):
if (
tdSql.queryResult[0][2] == "follower"
and tdSql.queryResult[0][3] == "ready"
):
tdLog.success("%d mnodes is ready in 10s" % self.mnodeNums)
elif tdSql.queryResult[1][2] == "follower":
tdLog.success(f"{mnodeNum} mnodes ready in {count}s")
return True
elif tdSql.queryResult[1][2] == "leader":
if not checkFollower:
tdLog.success(f"{mnodeNum} mnodes ready in {count}s")
return True
elif tdSql.queryResult[0][2] == "follower":
tdLog.success(f"{mnodeNum} mnodes ready in {count}s")
return True
count += 1
else:
tdLog.debug(tdSql.queryResult)
tdLog.exit("cluster of %d mnodes is not ready in 10s " % self.mnodeNums)
tdLog.exit(f"{mnodeNum} mnodes not ready in {count}s")
def check3mnodeoff(self, offlineDnodeNo, mnodeNums=3):
def check3mnodeoff(self, offlineDnodeNo, mnodeNum=3):
count = 0
while count < 10:
while count < 30:
time.sleep(1)
tdSql.query("select * from information_schema.ins_mnodes;")
if tdSql.checkRows(mnodeNums):
tdLog.success("cluster has %d mnodes" % self.mnodeNums)
if tdSql.checkRows(mnodeNum):
tdLog.success("cluster has %d mnodes" % mnodeNum)
else:
tdLog.exit("mnode number is correct")
if offlineDnodeNo == 1:
@ -408,13 +381,13 @@ class ClusterComCheck:
tdLog.debug(tdSql.queryResult)
tdLog.exit(f"stop mnodes on dnode {offlineDnodeNo} failed in 10s ")
def check3mnode2off(self, mnodeNums=3):
def check3mnode2off(self, mnodeNum=3):
count = 0
while count < 10:
while count < 30:
time.sleep(1)
tdSql.query("select * from information_schema.ins_mnodes;")
if tdSql.checkRows(mnodeNums):
tdLog.success("cluster has %d mnodes" % self.mnodeNums)
if tdSql.checkRows(mnodeNum):
tdLog.success("cluster has %d mnodes" % mnodeNum)
else:
tdLog.exit("mnode number is correct")
if tdSql.queryResult[0][2] == "leader":

View file

@ -620,13 +620,11 @@ class TDDnode:
)
else:
psCmd = (
"ps -ef|grep -w %s| grep dnode%d|grep -v grep | awk '{print $2}' | xargs"
"ps -ef | grep -w %s | grep dnode%d | grep -v grep | awk '{print $2}' | xargs"
% (toBeKilled, self.index)
)
processID = (
subprocess.check_output(psCmd, shell=True).decode("utf-8").strip()
)
processID = subprocess.check_output(psCmd, shell=True).decode("utf-8").strip()
tdLog.info(f"psCmd:{psCmd}, processId:[{processID}]")
onlyKillOnceWindows = 0
while processID:
if not platform.system().lower() == "windows" or (
@ -637,10 +635,12 @@ class TDDnode:
killCmd = "kill -INT %s > nul 2>&1" % processID
os.system(killCmd)
onlyKillOnceWindows = 1
# tdLog.info(f"kill cmd:{killCmd}")
time.sleep(1)
processID = (
subprocess.check_output(psCmd, shell=True).decode("utf-8").strip()
)
tdLog.info(f"killed processID:{processID}")
if self.valgrind:
time.sleep(2)
@ -677,13 +677,14 @@ class TDDnode:
)
else:
psCmd = (
"ps -ef|grep -w %s| grep dnode%d|grep -v grep | awk '{print $2}' | xargs"
"ps -ef | grep -w %s | grep dnode%d | grep -v grep | awk '{print $2}' | xargs"
% (toBeKilled, self.index)
)
processID = (
subprocess.check_output(psCmd, shell=True).decode("utf-8").strip()
)
tdLog.info(f"psCmd:{psCmd}, processId:[{processID}]")
onlyKillOnceWindows = 0
while processID:
if not platform.system().lower() == "windows" or (
@ -694,10 +695,12 @@ class TDDnode:
killCmd = "kill -KILL %s > nul 2>&1" % processID
os.system(killCmd)
onlyKillOnceWindows = 1
# tdLog.info(f"kill cmd:{killCmd}")
time.sleep(1)
processID = (
subprocess.check_output(psCmd, shell=True).decode("utf-8").strip()
)
tdLog.info(f"killed processID:{processID}")
# for port in range(6030, 6041):
# fuserCmd = "fuser -k -n tcp %d" % port
# os.system(fuserCmd)

View file

@ -1305,6 +1305,49 @@ class TDSql:
if show:
tdLog.info("check key successfully")
def expectKeyData(self, key, col, data, show=False):
"""
Whether the data at the specified key matches the expected data.
Args:
key: The first column to be compared with.
col (int): The column index of the data to be checked.
data: The expected data to be compared with.
show (bool, optional): If True, logs a message when the check is successful. Defaults to False.
Returns:
Bool
Raises:
None
"""
if col >= self.queryCols:
caller = inspect.getframeinfo(inspect.stack()[1][0])
args = (caller.filename, caller.lineno, self.sql, col + 1, self.queryCols)
tdLog.info(
"%s(%d) failed: sql:%s, col:%d is larger than queryCols:%d" % args
)
return False
row = -1
for i in range(self.queryRows):
if self.queryResult[i][col] == data:
row = i
tdLog.info(f"find key:{key}, row:{row} col:{col}, data:{data}")
if row == -1:
caller = inspect.getframeinfo(inspect.stack()[1][0])
args = (caller.filename, caller.lineno, self.sql, key, col)
return False
if show:
tdLog.info("check key successfully")
return True
def checkAssert(self, assertVal, show=False):
"""
Checks if the assertVal is true.
@ -1322,7 +1365,7 @@ class TDSql:
if assertVal != True:
caller = inspect.getframeinfo(inspect.stack()[1][0])
args = (caller.filename, caller.lineno, self.sql, assertVal)
args = (caller.filename, caller.lineno, self.sql)
tdLog.exit("%s(%d) failed: sql:%s asserted" % args)
if show: