mirror of
https://github.com/taosdata/TDengine
synced 2026-05-24 10:09:01 +00:00
150 lines
4.5 KiB
Python
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")
|