use minikv::coordinator::raft_node::{RaftNode, RaftRole};
use std::sync::Arc;
#[tokio::test]
async fn test_split_brain_simulation() {
let node1 = Arc::new(RaftNode::new("node1".to_string()));
let node2 = Arc::new(RaftNode::new("node2".to_string()));
let node3 = Arc::new(RaftNode::new("node3".to_string()));
node1.become_leader();
assert!(node1.is_leader());
assert_eq!(node1.get_role(), RaftRole::Leader);
node2.step_down(node2.get_term() + 1, None); assert!(!node2.is_leader());
assert_eq!(node2.get_role(), RaftRole::Follower);
assert_eq!(node3.get_role(), RaftRole::Follower);
node2.become_leader();
assert!(node2.is_leader());
assert_eq!(node2.get_role(), RaftRole::Leader);
}