public void WillRepeatReplicationUntilGetDone() { replication.Stub(x => x.AssignAllEmptySegments(Arg <NodeEndpoint> .Is.Anything, Arg.Is(ReplicationType.Ownership), Arg <int[]> .Is.Anything)) .Return(new[] { 0 }); var request = new ExtendedPutRequest { Bytes = new byte[] { 1 }, Key = "a", }; for (int i = 0; i < 5; i++) { replication.Stub(x => x.ReplicateNextPage(Arg <NodeEndpoint> .Is.Anything, Arg.Is(ReplicationType.Ownership), Arg <int> .Is.Anything)) .Repeat.Once() .Return(new ReplicationResult { PutRequests = new[] { request, }, RemoveRequests = new ExtendedRemoveRequest[0], Done = false }); } replication.Stub(x => x.ReplicateNextPage(Arg <NodeEndpoint> .Is.Anything, Arg.Is(ReplicationType.Ownership), Arg <int> .Is.Anything)) .Repeat.Once() .Return(new ReplicationResult { PutRequests = new[] { request, }, RemoveRequests = new ExtendedRemoveRequest[0], Done = true }); var success = command.Execute(); Assert.True(success); storage.AssertWasCalled(x => x.Put(topologyVersion, request), o => o.Repeat.Times(6)); }
public void WhenSendingToOwnerWillSendItToOwnerUri() { var request = new ExtendedPutRequest(); node.SendToOwner(0, new[] { request }); queueManager.Send(endPoint.Async, Arg <MessagePayload> .Is.TypeOf); }
public static PutRequestMessage GetPutRequest(this ExtendedPutRequest x) { var builder = new PutRequestMessage.Builder { Bytes = ByteString.CopyFrom(x.Bytes), IsReadOnly = x.IsReadOnly, IsReplicationRequest = x.IsReplicationRequest, Key = x.Key, OptimisticConcurrency = x.OptimisticConcurrency, Segment = x.Segment, Tag = x.Tag, }; if (x.ExpiresAt != null) { builder.ExpiresAtAsDouble = x.ExpiresAt.Value.ToOADate(); } if (x.ReplicationTimeStamp != null) { builder.ReplicationTimeStampAsDouble = x.ReplicationTimeStamp.Value.ToOADate(); } if (x.ReplicationVersion != null) { builder.ReplicationVersion = GetVersion(x.ReplicationVersion); } return(builder.Build()); }
public void WhenSendingToOtherBackupsFromBackupNode() { var request = new ExtendedPutRequest(); node.SendToAllOtherBackups(1, new[] { request }); queueManager.Send(endPoint.Async, Arg <MessagePayload> .Is.TypeOf); queueManager.Send(backup2.Async, Arg <MessagePayload> .Is.TypeOf); }
public void WillReplicateToOtherSystems() { node.Stub(x => x.IsSegmentOwned(0)).Return(true); var request = new ExtendedPutRequest { Key = "test", Bytes = new byte[] { 1, 2, 4 }, Segment = 0, }; distributedHashTableStorage.Put(topologyVersion, request); node.AssertWasCalled(x => x.SendToAllOtherBackups(0, request)); }
public void WillReplicateToOwnerWhenFailedOverToAnotherNode() { node.Stub(x => x.IsSegmentOwned(0)).Return(false); var request = new ExtendedPutRequest { Key = "test", Bytes = new byte[] { 1, 2, 4 }, Segment = 0, }; distributedHashTableStorage.Put(topologyVersion, request); node.AssertWasCalled(x => x.SendToOwner(0, request)); }
public void WillPutReturnedItemsIntoStorage() { replication.Stub(x => x.AssignAllEmptySegments(Arg <NodeEndpoint> .Is.Anything, Arg.Is(ReplicationType.Ownership), Arg <int[]> .Is.Anything)) .Return(new[] { 0 }); var request = new ExtendedPutRequest { Bytes = new byte[] { 1 }, Key = "a", }; replication.Stub(x => x.ReplicateNextPage(Arg <NodeEndpoint> .Is.Anything, Arg.Is(ReplicationType.Ownership), Arg <int> .Is.Anything)) .Return(new ReplicationResult { PutRequests = new[] { request, }, RemoveRequests = new ExtendedRemoveRequest[0], Done = true }); var success = command.Execute(); Assert.True(success); storage.AssertWasCalled(x => x.Put(topologyVersion, request)); }