public void Client_of_4_node_cluster_must_be_able_to_DOWN_a_node_that_is_UP()
{
var thirdAddress = GetAddress(_config.Third);
AwaitClusterUp(_config.First, _config.Second, _config.Third, _config.Fourth);
RunOn(() =>
{
Cluster.Down(thirdAddress);
EnterBarrier("down-third-node");
MarkNodeAsUnavailable(thirdAddress);
AwaitMembersUp(3, ImmutableHashSet.Create(thirdAddress));
ClusterView.Members.Any(x => x.Address == thirdAddress).ShouldBeFalse();
}, _config.First);
RunOn(() =>
{
EnterBarrier("down-third-node");
}, _config.Third);
RunOn(() =>
{
EnterBarrier("down-third-node");
AwaitMembersUp(3, ImmutableHashSet.Create(thirdAddress));
}, _config.Second, _config.Fourth);
EnterBarrier("await-completion");
}
}