Maksim Davydov created IGNITE-29083:
---------------------------------------
Summary: Add a JUnit base for multi-DC network split tests
Key: IGNITE-29083
URL: https://issues.apache.org/jira/browse/IGNITE-29083
Project: Ignite
Issue Type: Task
Reporter: Maksim Davydov
Assignee: Maksim Davydov
JUnit tests have no reliable way to cut the network between the data centers
(DCs) of one cluster. The existing template,
IgniteCacheTopologySplitAbstractTest, splits the cluster into two halves and
waits for one exact topology version without a timeout. If the split ends in a
different topology, the test hangs until it is killed. Its heal delivers the
messages held during the split, which replays one side's view of the cluster on
the other side.
This adds MdcTopologySplitAbstractTest, a new abstract test on top of the
template:
- It splits the cluster into two or more sides by each node's DC. A client
knows only the servers of its own DC, so it stays on that DC's side.
- It waits up to 30 s until every node sees only its own side. Otherwise the
test fails and logs what every node sees.
- It heals by dropping the held messages and restarting every side but one. The
restarted nodes rejoin and rebalance from the side that stayed up.
The first test on it, MdcDcIsolationTest, checks the topology validator in four
cases:
- 3 DCs, majority validator, DC3 cut off: DC1 and DC2 write, DC3 rejects writes
and serves reads.
- The same with DC1 cut off, so that no DC is privileged.
- 3 DCs split three ways: no side writes, every side reads.
- 2 DCs with DC1 as the main one: DC2 cut off rejects writes and serves reads.
After heal, every DC holds the same data and idle_verify finds no conflicts.
Test code only.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)