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));
            }
Beispiel #2
0
            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));
            }
Beispiel #8
0
            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());
 }