use std::time::Duration;
#[tokio::test(flavor = "multi_thread", worker_threads = 4)]
async fn cluster_quickstart_example() {
use datum_cluster::{ClusterConfig, ClusterNode, MemberState};
let config = ClusterConfig::new("orders-1").with_roles(["orders", "eu-west"]);
let node = ClusterNode::start(config)
.await
.expect("cluster node starts");
assert_eq!(node.node_id(), "orders-1");
let state = node.state();
let _events = node.events();
let snapshot = node.current_state();
assert_eq!(snapshot.self_node, "orders-1");
assert!(snapshot.member("orders-1").is_some());
loop {
if state
.get()
.member("orders-1")
.is_some_and(|member| member.state == MemberState::Up)
{
break;
}
tokio::time::sleep(Duration::from_millis(10)).await;
}
assert!(node.current_state().is_placement_coordinator("orders-1"));
node.leave().await.expect("graceful leave");
}