Exemple #1
0
        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());
        }