public void RegisterOwnGlobalRoutes_RegisteresOnlyGlobalyRegisteredActors() { var actors = EnumerableExtensions.Produce(Randomizer.Int32(5, 15), i => new ReceiverIdentifierRegistration(ReceiverIdentities.CreateForActor(), i % 2 == 0)); var messageIdentifier = MessageIdentifier.Create <SimpleMessage>(); var internalRoutes = new InternalRouting { Actors = new[] { new MessageActorRoute { Message = messageIdentifier, Actors = actors } }, MessageHubs = Enumerable.Empty <MessageHubRoute>() }; internalRoutingTable.Setup(m => m.GetAllRoutes()).Returns(internalRoutes); var globalActors = internalRoutes.Actors .SelectMany(r => r.Actors.Where(a => !a.LocalRegistration)) .Select(a => new ReceiverIdentifier(a.Identity)); // registrar.RegisterOwnGlobalRoutes(domain); // Func <IEnumerable <MessageRoute>, bool> isGlobalMessageRoute = mrs => { Assert.IsTrue(mrs.All(mr => mr.Message == messageIdentifier)); CollectionAssert.AreEquivalent(globalActors, mrs.Select(mr => mr.Receiver)); return(true); }; clusterMonitor.Verify(m => m.RegisterSelf(It.Is <IEnumerable <MessageRoute> >(mrs => isGlobalMessageRoute(mrs)), domain), Times.Once); }
public void RegisterOwnGlobalRoutes_RegisteresOnlyGlobalyRegisteredMessageHubs() { var internalRoutes = new InternalRouting { Actors = Enumerable.Empty <MessageActorRoute>(), MessageHubs = EnumerableExtensions.Produce(Randomizer.Int32(5, 15), i => new MessageHubRoute { MessageHub = ReceiverIdentities.CreateForMessageHub(), LocalRegistration = i % 2 == 0 }) }; internalRoutingTable.Setup(m => m.GetAllRoutes()).Returns(internalRoutes); var globalMessageHubs = internalRoutes.MessageHubs.Where(mh => !mh.LocalRegistration); // registrar.RegisterOwnGlobalRoutes(domain); // Func <IEnumerable <MessageRoute>, bool> isGlobalMessageHub = mrs => { CollectionAssert.AreEquivalent(globalMessageHubs.Select(mh => mh.MessageHub), mrs.Select(mr => mr.Receiver)); return(true); }; clusterMonitor.Verify(m => m.RegisterSelf(It.Is <IEnumerable <MessageRoute> >(mrs => isGlobalMessageHub(mrs)), domain), Times.Once); }
private IEnumerable <Cluster.MessageRoute> GetActorRoutes(string domain, InternalRouting routes) => routes.Actors.SelectMany(r => r.Actors .Where(a => !a.LocalRegistration) .Select(a => new Cluster.MessageRoute { Receiver = new ReceiverIdentifier(a.Identity), Message = r.Message })) .Where(r => securityProvider.GetDomain(r.Message.Identity) == domain);
public void Setup() { clusterMonitor = new Mock <IClusterMonitor>(); internalRoutingTable = new Mock <IInternalRoutingTable>(); securityProvider = new Mock <ISecurityProvider>(); domain = Guid.NewGuid().ToString(); securityProvider.Setup(m => m.DomainIsAllowed(domain)).Returns(true); logger = new Mock <ILogger>(); internalRoutes = GetInternalRoutes(); internalRoutingTable.Setup(m => m.GetAllRoutes()).Returns(internalRoutes); handler = new MessageRouteDiscoveryHandler(clusterMonitor.Object, internalRoutingTable.Object, securityProvider.Object, logger.Object); }
public void RoutesFromNotFromRequestedDomain_AreNotRegistered() { var receiverIdentifierRegistration = new ReceiverIdentifierRegistration(ReceiverIdentities.CreateForActor(), false); var min = 5; var internalRoutes = new InternalRouting { Actors = Randomizer.Int32(min, 15) .Produce(() => new MessageActorRoute { Message = new MessageIdentifier(Guid.NewGuid().ToByteArray(), Randomizer.UInt16(), Guid.NewGuid().ToByteArray()), Actors = new[] { receiverIdentifierRegistration } }), MessageHubs = Enumerable.Empty <MessageHubRoute>() }; internalRoutingTable.Setup(m => m.GetAllRoutes()).Returns(internalRoutes); var otherDomainRoutes = internalRoutes.Actors.Take(min / 2).ToList(); var allowedDomainRoutes = internalRoutes.Actors.Except(otherDomainRoutes); foreach (var route in otherDomainRoutes) { securityProvider.Setup(m => m.GetDomain(route.Message.Identity)).Returns(Guid.NewGuid().ToString); } // registrar.RegisterOwnGlobalRoutes(domain); // Func <IEnumerable <MessageRoute>, bool> areAllowedMessageRoutes = mrs => { allowedDomainRoutes.Select(r => r.Message) .Should() .BeEquivalentTo(mrs.Select(r => r.Message)); var receiverIdentifiers = allowedDomainRoutes.SelectMany(r => r.Actors.Select(a => new ReceiverIdentifier(a.Identity))); receiverIdentifiers.Should() .BeEquivalentTo(mrs.Select(r => r.Receiver)); return(true); }; clusterMonitor.Verify(m => m.RegisterSelf(It.Is <IEnumerable <MessageRoute> >(mrs => areAllowedMessageRoutes(mrs)), domain), Times.Once); }
private static IEnumerable <Cluster.MessageRoute> GetMessageHubRoutes(InternalRouting routes) => routes.MessageHubs.Where(mh => !mh.LocalRegistration) .Select(mh => new Cluster.MessageRoute { Receiver = new ReceiverIdentifier(mh.MessageHub.Identity) });