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)

Reply via email to