TDengine/test/cases/02-Databases/05-Sync/test_vnode_replica3_basic.py
2025-08-07 18:07:16 +08:00

150 lines
4.5 KiB
Python

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):
"""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.
Catalog:
- DataBase:Sync
Since: v3.0.0.0
Labels: common,ci
Jira: None
History:
- 2025-5-5 Simon Guan Migrated from tsim/vnode/replica3_basic.sim
"""
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")