public override void When() { BecomeLeader(); WriterCheckpoint.Write(_logPosition); WriterCheckpoint.Flush(); Service.Handle(new ReplicationTrackingMessage.WriterCheckpointFlushed()); Service.Handle(new ReplicationTrackingMessage.ReplicaWriteAck(_replica1, _logPosition)); Service.Handle(new ReplicationTrackingMessage.ReplicaWriteAck(_replica2, _logPosition)); AssertEx.IsOrBecomesTrue(() => Service.IsCurrent()); Service.Handle(new SystemMessage.VNodeConnectionLost( PortsHelper.GetLoopback(), Guid.NewGuid(), _replica1)); ReplicatedTos.Clear(); WriterCheckpoint.Write(_logPosition2); WriterCheckpoint.Flush(); Service.Handle(new ReplicationTrackingMessage.ReplicaWriteAck(_replica2, _logPosition2)); Service.Handle(new ReplicationTrackingMessage.ReplicaWriteAck(_replica3, _logPosition2)); AssertEx.IsOrBecomesTrue(() => Service.IsCurrent()); }