public void AddingNewNodeResultInAllSegmentsHavingSingleBackupCopy() { var ranges = master.Join(endPoint); master.CaughtUp(endPoint, ReplicationType.Ownership, ranges.Select(x => x.Index).ToArray()); Assert.True(master.Segments.All(x => x.PendingBackups.Count == 1)); }
public void WillRaiseTopologyChangedEvent() { var ranges = master.Join(endPoint); bool wasCalled = false; master.TopologyChanged += () => wasCalled = true; master.CaughtUp(endPoint, ReplicationType.Ownership, ranges.First().Index); Assert.True(wasCalled); }
public OnMasterWithTwoNodes() { master = new DistributedHashTableMaster(); endPoint = NodeEndpoint.ForTest(9); var existingEndpoint = NodeEndpoint.ForTest(3); var ranges = master.Join(existingEndpoint); master.CaughtUp(existingEndpoint, ReplicationType.Ownership, ranges.Select(x => x.Index).ToArray()); var anotherPoint = NodeEndpoint.ForTest(10); ranges = master.Join(anotherPoint); master.CaughtUp(anotherPoint, ReplicationType.Ownership, ranges.Select(x => x.Index).ToArray()); }
public NewEndpointJoiningMasterWithTwoNodes() { master.Join(endPoint); var ranges = master.Join(anotherNodeInTheMaster); master.CaughtUp(anotherNodeInTheMaster, ReplicationType.Ownership, ranges.Select(x => x.Index).ToArray()); master.Join(newEndpoint); }
public OnGaveUp() { master = new DistributedHashTableMaster(); master.CaughtUp(NodeEndpoint.ForTest(9), ReplicationType.Ownership, master.Join(NodeEndpoint.ForTest(9)).Select(x => x.Index).ToArray()); endPoint = NodeEndpoint.ForTest(5); }
public OnGaveUp() { master = new DistributedHashTableMaster(); master.CaughtUp(NodeEndpoint.ForTest(9), ReplicationType.Ownership, master.Join(NodeEndpoint.ForTest(9)).Select(x => x.Index).ToArray()); endPoint = NodeEndpoint.ForTest(5); }
public void AddingNewNodeResultInAllSegmentsHavingAtLeastTwoBackupCopy() { var yetAnotherEndPoint = NodeEndpoint.ForTest(7); var ranges = master.Join(yetAnotherEndPoint); master.CaughtUp(yetAnotherEndPoint, ReplicationType.Ownership, ranges.Select(x => x.Index).ToArray()); Assert.True(master.Segments.All(x => x.PendingBackups.Count >= 2)); }
public OnMasterWithOneExistingNode() { master = new DistributedHashTableMaster(); endPoint = NodeEndpoint.ForTest(9); var existingEndpoint = NodeEndpoint.ForTest(3); var ranges = master.Join(existingEndpoint); master.CaughtUp(existingEndpoint, ReplicationType.Ownership, ranges.Select(x => x.Index).ToArray()); }
public void WhenGivingUpOnBackupsWillRemoveFromPendingBackups() { master.CaughtUp(endPoint, ReplicationType.Ownership, master.Join(endPoint).Select(x => x.Index).ToArray()); var segment = master.Topology.Segments.First(x => x.PendingBackups.Count > 0); master.GaveUp(segment.PendingBackups.First(), ReplicationType.Backup, segment.Index); segment = master.Topology.Segments[segment.Index]; Assert.Empty(segment.PendingBackups); Assert.Equal(0, segment.Backups.Count); }
private void HandleCatchUp(MasterMessageUnion wrapper, MessageStreamWriter <MasterMessageUnion> writer) { master.CaughtUp(new NodeEndpoint { Async = new Uri(wrapper.CaughtUp.Endpoint.Async), Sync = new Uri(wrapper.CaughtUp.Endpoint.Sync) }, wrapper.CaughtUp.Type == ReplicationType.Backup ? Internal.ReplicationType.Backup : Internal.ReplicationType.Ownership, wrapper.CaughtUp.CaughtUpSegmentsList.ToArray()); writer.Write(new MasterMessageUnion.Builder { Type = MasterMessageType.CaughtUpResponse }.Build()); }