示例#1
0
        public void IfDiscoveryMessageRouteIsForGlobalyRegisteredMessagHub_RegisterSelfIsCalled()
        {
            var localMessageRoute = internalRoutes.MessageHubs
                                    .Where(mh => !mh.LocalRegistration)
                                    .Select(mh => new MessageRoute
            {
                Receiver = mh.MessageHub
            })
                                    .First();
            var payload = new DiscoverMessageRouteMessage {
                ReceiverIdentity = localMessageRoute.Receiver.Identity
            };
            var message = Message.Create(payload).As <Message>();

            message.SetDomain(domain);
            securityProvider.Setup(m => m.GetDomain(It.IsAny <byte[]>())).Returns(domain);
            var allowedDomains = EnumerableExtensions.Produce(Randomizer.Int32(2, 5), () => Guid.NewGuid().ToString()).Concat(new[] { domain });

            securityProvider.Setup(m => m.GetAllowedDomains()).Returns(allowedDomains);
            //
            handler.Handle(message, null);
            //
            Func <IEnumerable <MessageRoute>, bool> isRegisteredMessageHub = rts =>
            {
                var route = rts.First();
                Assert.AreEqual(localMessageRoute.Receiver, route.Receiver);
                return(true);
            };

            clusterMonitor.Verify(m => m.RegisterSelf(It.Is <IEnumerable <MessageRoute> >(rts => isRegisteredMessageHub(rts)), domain), Times.Once);
        }
示例#2
0
        public void IfDiscoveryMessageRouteDomainNotEqualsToActorMessageDomain_RegisterSelfIsNotCalled()
        {
            var localMessageRoute = internalRoutes.Actors
                                    .SelectMany(r => r.Actors
                                                .Where(a => !a.LocalRegistration)
                                                .Select(a => new MessageRoute
            {
                Receiver = a,
                Message  = r.Message
            }))
                                    .First();
            var payload = new DiscoverMessageRouteMessage
            {
                MessageContract = new MessageContract
                {
                    Identity  = localMessageRoute.Message.Identity,
                    Partition = localMessageRoute.Message.Partition,
                    Version   = localMessageRoute.Message.Version
                }
            };
            var message = Message.Create(payload).As <Message>();

            message.SetDomain(domain);
            securityProvider.Setup(m => m.GetDomain(It.IsAny <byte[]>())).Returns(domain);
            securityProvider.Setup(m => m.GetDomain(localMessageRoute.Message.Identity)).Returns(Guid.NewGuid().ToString);
            //
            handler.Handle(message, null);
            //
            clusterMonitor.Verify(m => m.RegisterSelf(It.IsAny <IEnumerable <MessageRoute> >(), It.IsAny <string>()), Times.Never);
        }
示例#3
0
        public void IfDomainIsNotAllowed_RegisterSelfIsNotCalled()
        {
            var payload = new DiscoverMessageRouteMessage();
            var message = Message.Create(payload).As <Message>();

            message.SetDomain(Guid.NewGuid().ToString());
            //
            handler.Handle(message, null);
            //
            clusterMonitor.Verify(m => m.RegisterSelf(It.IsAny <IEnumerable <MessageRoute> >(), It.IsAny <string>()), Times.Never);
        }
示例#4
0
        public void IfDiscoveryMessageRouteIsForNotRegisteredMessageHub_RegisterSelfIsNotCalled()
        {
            var payload = new DiscoverMessageRouteMessage {
                ReceiverIdentity = ReceiverIdentities.CreateForMessageHub().Identity
            };
            var message = Message.Create(payload).As <Message>();

            message.SetDomain(domain);
            //
            handler.Handle(message, null);
            //
            internalRoutingTable.Verify(m => m.GetAllRoutes(), Times.Once);
            clusterMonitor.Verify(m => m.RegisterSelf(It.IsAny <IEnumerable <MessageRoute> >(), It.IsAny <string>()), Times.Never);
        }
示例#5
0
        public void IfDiscoveryMessageRouteIsForNotRegisteredMessage_RegisterSelfIsNotCalled()
        {
            var payload = new DiscoverMessageRouteMessage
            {
                MessageContract = new MessageContract
                {
                    Identity  = Guid.NewGuid().ToByteArray(),
                    Partition = Guid.NewGuid().ToByteArray(),
                    Version   = Randomizer.UInt16()
                }
            };
            var message = Message.Create(payload).As <Message>();

            message.SetDomain(domain);
            //
            handler.Handle(message, null);
            //
            internalRoutingTable.Verify(m => m.GetAllRoutes(), Times.Once);
            clusterMonitor.Verify(m => m.RegisterSelf(It.IsAny <IEnumerable <MessageRoute> >(), It.IsAny <string>()), Times.Never);
        }
示例#6
0
        public void IfDiscoveryMessageRouteIsForMessageWithGlobalyRegisteredActors_RegisterSelfIsCalledOnceForEachActor()
        {
            var localMessageRoute = internalRoutes.Actors
                                    .SelectMany(r => r.Actors
                                                .Where(a => !a.LocalRegistration)
                                                .Select(a => new MessageRoute
            {
                Receiver = a,
                Message  = r.Message
            }))
                                    .GroupBy(a => a.Message)
                                    .First();
            var payload = new DiscoverMessageRouteMessage
            {
                MessageContract = new MessageContract
                {
                    Identity  = localMessageRoute.Key.Identity,
                    Partition = localMessageRoute.Key.Partition,
                    Version   = localMessageRoute.Key.Version
                }
            };
            var message = Message.Create(payload).As <Message>();

            message.SetDomain(domain);
            securityProvider.Setup(m => m.GetDomain(It.IsAny <byte[]>())).Returns(domain);
            //
            handler.Handle(message, null);
            //
            Func <IEnumerable <MessageRoute>, bool> isRegisteredMessageRoute = rts =>
            {
                var route = rts.First();
                Assert.AreEqual(localMessageRoute.Key, route.Message);
                Assert.IsTrue(localMessageRoute.Any(a => a.Receiver == route.Receiver));
                return(true);
            };

            clusterMonitor.Verify(m => m.RegisterSelf(It.Is <IEnumerable <MessageRoute> >(rts => isRegisteredMessageRoute(rts)), domain), Times.Exactly(localMessageRoute.Count()));
        }
示例#7
0
        public void IfDiscoveryMessageRouteIsForMessageWithLocalyRegisteredActor_RegisterSelfIsNotCalled()
        {
            var localMessageRoute = internalRoutes.Actors.SelectMany(r => r.Actors
                                                                     .Where(a => a.LocalRegistration)
                                                                     .Select(a => r.Message))
                                    .First();
            var payload = new DiscoverMessageRouteMessage
            {
                MessageContract = new MessageContract
                {
                    Identity  = localMessageRoute.Identity,
                    Partition = localMessageRoute.Partition,
                    Version   = localMessageRoute.Version
                }
            };
            var message = Message.Create(payload).As <Message>();

            message.SetDomain(domain);
            //
            handler.Handle(message, null);
            //
            internalRoutingTable.Verify(m => m.GetAllRoutes(), Times.Once);
            clusterMonitor.Verify(m => m.RegisterSelf(It.IsAny <IEnumerable <MessageRoute> >(), It.IsAny <string>()), Times.Never);
        }