示例#1
0
        public void WhenCusterMonitorStops_UnregisterNodeMessageIsSent()
        {
            Func <Barrier, bool> setBarrier = (b) =>
            {
                b.SignalAndWait();
                return(true);
            };

            autoDiscoveryListener.Setup(m => m.StartBlockingListenMessages(It.IsAny <Action>(),
                                                                           It.IsAny <CancellationToken>(),
                                                                           It.Is <Barrier>(b => setBarrier(b))));
            autoDiscoverySender.Setup(m => m.StartBlockingSendMessages(It.IsAny <CancellationToken>(),
                                                                       It.Is <Barrier>(b => setBarrier(b))));
            //
            clusterMonitor.Start();
            AsyncOp.Sleep();
            clusterMonitor.Stop();
            //
            Func <IMessage, bool> isUnregistrationMessage = msg =>
            {
                if (msg.Equals(MessageIdentifier.Create <UnregisterNodeMessage>()))
                {
                    var payload = msg.GetPayload <UnregisterNodeMessage>();
                    Assert.IsTrue(Unsafe.ArraysEqual(scaleOutAddress.Identity, payload.ReceiverNodeIdentity));
                    Assert.AreEqual(scaleOutAddress.Uri.ToSocketAddress(), payload.Uri);
                    return(true);
                }

                return(false);
            };

            autoDiscoverySender.Verify(m => m.EnqueueMessage(It.Is <IMessage>(msg => isUnregistrationMessage(msg))), Times.Once);
        }
示例#2
0
 public bool Stop(HostControl hostControl)
 {
     if (_clusterMonitor.Role == NodeRole.StandAlone)
     {
         StopFeed();
     }
     else
     {
         _clusterMonitor.Stop();
     }
     return(true);
 }
示例#3
0
        public void WhenClusterMonitorStarts_ClusterRoutesAreRequested()
        {
            Func <Barrier, bool> setBarrier = (b) =>
            {
                b.SignalAndWait();
                return(true);
            };

            autoDiscoveryListener.Setup(m => m.StartBlockingListenMessages(It.IsAny <Action>(),
                                                                           It.IsAny <CancellationToken>(),
                                                                           It.Is <Barrier>(b => setBarrier(b))));
            autoDiscoverySender.Setup(m => m.StartBlockingSendMessages(It.IsAny <CancellationToken>(),
                                                                       It.Is <Barrier>(b => setBarrier(b))));
            //
            clusterMonitor.Start();
            config.RouteDiscovery
            .ClusterAutoDiscoveryStartDelay
            .MultiplyBy(config.RouteDiscovery.ClusterAutoDiscoveryStartDelayMaxMultiplier)
            .Sleep();
            clusterMonitor.Stop();
            //
            Func <Message, bool> isRequestClusterRoutesMessage = (msg) =>
            {
                if (msg.Equals(MessageIdentifier.Create <RequestClusterMessageRoutesMessage>()))
                {
                    var payload = msg.GetPayload <RequestClusterMessageRoutesMessage>();
                    Assert.True(Unsafe.ArraysEqual(scaleOutAddress.Identity, payload.RequestorNodeIdentity));
                    Assert.Equal(scaleOutAddress.Uri.ToSocketAddress(), payload.RequestorUri);
                    return(true);
                }

                return(false);
            };

            autoDiscoverySender.Verify(m => m.EnqueueMessage(It.Is <IMessage>(msg => isRequestClusterRoutesMessage(msg.As <Message>()))), Times.Once);
        }