public void A_cluster_of_3_members_must_not_reach_convergence_while_any_nodes_are_unreachable()
{
var thirdAddress = GetAddress(_config.Third);
EnterBarrier("before-shutdown");
RunOn(() =>
{
//kill 'third' node
TestConductor.Exit(_config.Third, 0).Wait();
MarkNodeAsUnavailable(thirdAddress);
}, _config.First);
RunOn(() => Within(TimeSpan.FromSeconds(28), () =>
{
//third becomes unreachable
AwaitAssert(() => ClusterView.UnreachableMembers.Count.ShouldBe(1));
AwaitSeenSameState(GetAddress(_config.First), GetAddress(_config.Second));
// still one unreachable
ClusterView.UnreachableMembers.Count.ShouldBe(1);
ClusterView.UnreachableMembers.First().Address.ShouldBe(thirdAddress);
ClusterView.Members.Count.ShouldBe(3);
}), _config.First, _config.Second);
EnterBarrier("after-2");
}