public void IfRouteReceiverIsMessageHub_MessageDominIsNotChecked() { securityProvider.Setup(m => m.GetDomain(It.IsAny <byte[]>())).Returns(Guid.NewGuid().ToString); var receiverNodeIdentity = Guid.NewGuid().ToByteArray(); var payload = CreateUnregisterMessageRoutePayload(receiverNodeIdentity, ReceiverIdentities.CreateForMessageHub().Identity); var message = Message.Create(payload).As <Message>(); var callsCount = payload.Routes.SelectMany(r => r.MessageContracts).Count(); message.SetDomain(domain); var peerRemoveResult = new PeerRemoveResult { ConnectionAction = PeerConnectionAction.KeepConnection }; externalRoutingTable.Setup(m => m.RemoveMessageRoute(It.IsAny <ExternalRouteRemoval>())).Returns(peerRemoveResult); // handler.Handle(message, backEndSocket.Object); // Func <ExternalRouteRemoval, bool> isRouteToRemove = route => { Assert.True(Unsafe.ArraysEqual(receiverNodeIdentity, route.NodeIdentifier)); Assert.True(payload.Routes .SelectMany(r => r.MessageContracts) .Select(mc => new MessageIdentifier(mc.Identity, mc.Version, mc.Partition)) .Any(m => m.Equals(route.Route.Message))); Assert.True(payload.Routes .Select(mc => new ReceiverIdentifier(mc.ReceiverIdentity)) .Any(receiver => receiver == route.Route.Receiver)); return(true); }; externalRoutingTable.Verify(m => m.RemoveMessageRoute(It.Is <ExternalRouteRemoval>(rt => isRouteToRemove(rt))), Times.Exactly(callsCount)); securityProvider.Verify(m => m.GetDomain(It.IsAny <byte[]>()), Times.Never()); }
public void PeerIsDisconnected_OnlyIfPeerConnectionActionIsDisconnect(PeerConnectionAction peerConnectionAction) { var receiverNodeIdentifier = new ReceiverIdentifier(Guid.NewGuid().ToByteArray()); var payload = new UnregisterUnreachableNodeMessage { ReceiverNodeIdentity = receiverNodeIdentifier.Identity }; var message = Message.Create(payload); var peerRemoveResult = new PeerRemoveResult { ConnectionAction = peerConnectionAction, Uri = new Uri("tcp://127.0.0.1:9009") }; externalRoutingTable.Setup(m => m.RemoveNodeRoute(receiverNodeIdentifier)).Returns(peerRemoveResult); // handler.Handle(message, backendSocket.Object); // externalRoutingTable.Verify(m => m.RemoveNodeRoute(receiverNodeIdentifier), Times.Once); backendSocket.Verify(m => m.Disconnect(peerRemoveResult.Uri), Times.Exactly(peerConnectionAction == PeerConnectionAction.Disconnect ? 1 : 0)); clusterHealthMonitor.Verify(m => m.DeletePeer(receiverNodeIdentifier), Times.Exactly(peerConnectionAction != PeerConnectionAction.KeepConnection ? 1 : 0)); }
public void IfRouteReceiverIsActorAndMessageDomainIsNotEqualToUnregisterMessageRouteDomain_ExternalMessageRouteIsNotRemoved() { securityProvider.Setup(m => m.GetDomain(It.IsAny <byte[]>())).Returns(Guid.NewGuid().ToString); var receiverNodeIdentity = Guid.NewGuid().ToByteArray(); var payload = CreateUnregisterMessageRoutePayload(receiverNodeIdentity, ReceiverIdentities.CreateForActor().Identity); var message = Message.Create(payload).As <Message>(); message.SetDomain(domain); var peerRemoveResult = new PeerRemoveResult { ConnectionAction = PeerConnectionAction.KeepConnection }; externalRoutingTable.Setup(m => m.RemoveMessageRoute(It.IsAny <ExternalRouteRemoval>())).Returns(peerRemoveResult); var callsCount = payload.Routes.SelectMany(r => r.MessageContracts).Count(); // handler.Handle(message, backEndSocket.Object); // externalRoutingTable.Verify(m => m.RemoveMessageRoute(It.IsAny <ExternalRouteRemoval>()), Times.Never); securityProvider.Verify(m => m.GetDomain(It.IsAny <byte[]>()), Times.Exactly(callsCount)); }
public void IfPeerRemovalConnectionActionIsDisconnect_ScaleOutBackendSocketIsDisconnectedFromPeer(PeerConnectionAction peerConnectionAction) { securityProvider.Setup(m => m.GetDomain(It.IsAny <byte[]>())).Returns(domain); var receiverNodeIdentity = Guid.NewGuid().ToByteArray(); var payload = CreateUnregisterMessageRoutePayload(receiverNodeIdentity); var message = Message.Create(payload).As <Message>(); var callsCount = payload.Routes.SelectMany(r => r.MessageContracts).Count(); message.SetDomain(domain); var peerRemoveResult = new PeerRemoveResult { ConnectionAction = peerConnectionAction, Uri = new Uri("tcp://127.0.0.1:9090") }; externalRoutingTable.Setup(m => m.RemoveMessageRoute(It.IsAny <ExternalRouteRemoval>())).Returns(peerRemoveResult); // handler.Handle(message, backEndSocket.Object); // backEndSocket.Verify(m => m.Disconnect(peerRemoveResult.Uri), Times.Exactly(peerConnectionAction == PeerConnectionAction.Disconnect ? callsCount : 0)); }
public void IfPeerRemovalConnectionActionNotEqualsKeepConnection_ClusterHealthMonitorDeletesPeer(PeerConnectionAction peerConnectionAction) { securityProvider.Setup(m => m.GetDomain(It.IsAny <byte[]>())).Returns(domain); var receiverNodeIdentity = Guid.NewGuid().ToByteArray(); var payload = CreateUnregisterMessageRoutePayload(receiverNodeIdentity); var message = Message.Create(payload).As <Message>(); var callsCount = payload.Routes.SelectMany(r => r.MessageContracts).Count(); message.SetDomain(domain); var peerRemoveResult = new PeerRemoveResult { ConnectionAction = peerConnectionAction, Uri = new Uri("tcp://127.0.0.1:9090") }; externalRoutingTable.Setup(m => m.RemoveMessageRoute(It.IsAny <ExternalRouteRemoval>())).Returns(peerRemoveResult); // handler.Handle(message, backEndSocket.Object); // clusterHealthMonitor.Verify(m => m.DeletePeer(new ReceiverIdentifier(payload.ReceiverNodeIdentity)), Times.Exactly(peerConnectionAction != PeerConnectionAction.KeepConnection ? callsCount : 0)); }