TDengine/test/cases/02-Databases/05-Sync/test_vnode_replica3_basic.py

151 lines
4.5 KiB
Python
Raw Normal View History

2025-05-05 06:08:10 +00:00
import time
from new_test_framework.utils import tdLog, tdSql, sc, clusterComCheck, clusterComCheck
class TestVnodeReplica3Basic:
def setup_class(cls):
tdLog.debug(f"start to execute {__file__}")
def test_vnode_replica3_basic(self):
2025-08-07 10:07:16 +00:00
"""Write: replica-3 mnode-3
1. Start a 3-node cluster with 3 mnodes.
2. Create a 1-replica, 1-vgroup database; create table, insert data, and verify.
3. Stop dnode2 insert data start dnode2 insert data.
4. Stop dnode3 insert data start dnode3 insert data.
5. Stop dnode1 insert data start dnode1 insert data.
6. Verify data integrity across all nodes.
2025-05-05 06:08:10 +00:00
Catalog:
2025-05-06 05:32:43 +00:00
- DataBase:Sync
2025-05-05 06:08:10 +00:00
Since: v3.0.0.0
Labels: common,ci
Jira: None
History:
2025-05-07 05:38:12 +00:00
- 2025-5-5 Simon Guan Migrated from tsim/vnode/replica3_basic.sim
2025-05-05 06:08:10 +00:00
"""
tdLog.info(f"========== step0")
clusterComCheck.checkDnodes(3)
tdSql.execute(f"create mnode on dnode 2")
tdSql.execute(f"create mnode on dnode 3")
clusterComCheck.checkMnodeStatus(3)
N = 10
table = "table_r3"
db = "db1"
tdLog.info(f"=================== step 1")
tdSql.execute(f"create database {db} replica 3 vgroups 1")
tdSql.execute(f"use {db}")
clusterComCheck.checkDbReady(db)
tdSql.execute(f"use {db}")
tdSql.execute(f"create table {table} (ts timestamp, speed int)")
tdLog.info(f"=================== step2")
x = 1
y = x + N
expect = N
while x < y:
ms = str(x) + "m"
tdSql.execute(f"insert into {table} values (now + {ms} , {x} )")
x = x + 1
tdSql.query(f"select * from {table}")
tdLog.info(f"sql select * from {table} -> {tdSql.getRows()}) points")
tdSql.checkRows(expect)
tdLog.info(f"=================== step3")
sc.dnodeStop(2)
clusterComCheck.checkDnodes(2)
clusterComCheck.checkDbReady(db)
y = x + N
expect = N * 2
while x < y:
ms = str(x) + "m"
tdSql.execute(f"insert into {table} values (now + {ms} , {x} )")
x = x + 1
tdLog.info(f"=================== step4")
sc.dnodeStart(2)
clusterComCheck.checkDnodes(3)
clusterComCheck.checkDbReady(db)
y = x + N
expect = N * 3
while x < y:
ms = str(x) + "m"
tdSql.execute(f"insert into {table} values (now + {ms} , {x} )")
x = x + 1
tdSql.query(f"select * from {table}")
tdLog.info(f"sql select * from {table} -> {tdSql.getRows()}) points")
tdLog.info(f"=================== step5")
sc.dnodeStop(3)
clusterComCheck.checkDnodes(2)
clusterComCheck.checkDbReady(db)
y = x + N
expect = N * 4
while x < y:
ms = str(x) + "m"
tdSql.execute(f"insert into {table} values (now + {ms} , 10)")
x = x + 1
tdSql.query(f"select * from {table}")
tdLog.info(f"sql select * from {table} -> {tdSql.getRows()}) points")
tdLog.info(f"=================== step6")
sc.dnodeStart(3)
clusterComCheck.checkDnodes(3)
clusterComCheck.checkDbReady(db)
y = x + N
expect = N * 5
while x < y:
ms = str(x) + "m"
tdSql.execute(f"insert into {table} values (now + {ms} , {x} )")
x = x + 1
tdSql.query(f"select * from {table}")
tdLog.info(f"sql select * from {table} -> {tdSql.getRows()}) points")
tdLog.info(f"=================== step7")
sc.dnodeStop(1)
clusterComCheck.checkDnodes(2)
clusterComCheck.checkDbReady(db)
y = x + N
expect = N * 6
while x < y:
ms = str(x) + "m"
tdSql.execute(f"insert into {table} values (now + {ms} , 10)")
x = x + 1
tdSql.query(f"select * from {table}")
tdLog.info(f"sql select * from {table} -> {tdSql.getRows()}) points")
tdLog.info(f"=================== step 8")
sc.dnodeStart(1)
clusterComCheck.checkDnodes(3)
clusterComCheck.checkDbReady(db)
y = x + N
expect = N * 7
while x < y:
ms = str(x) + "m"
tdSql.execute(f"insert into {table} values (now + {ms} , 10)")
x = x + 1
tdSql.query(f"select * from {table}")
tdLog.info(f"sql select * from {table} -> {tdSql.getRows()}) points")