Esempio n. 1
0
 public void Setup()
 {
     securityProvider = new Mock <ISecurityProvider>();
     domain           = Guid.NewGuid().ToString();
     securityProvider.Setup(m => m.GetAllowedDomains()).Returns(new[] { domain });
     securityProvider.Setup(m => m.GetDomain(It.IsAny <byte[]>())).Returns(domain);
     logger          = new Mock <ILogger>();
     routeDiscovery  = new Mock <IRouteDiscovery>();
     scaleOutAddress = new SocketEndpoint(new Uri("tcp://127.0.0.1:5000"), Guid.NewGuid().ToByteArray());
     scaleOutConfigurationProvider = new Mock <IScaleOutConfigurationProvider>();
     scaleOutConfigurationProvider.Setup(m => m.GetScaleOutAddress()).Returns(scaleOutAddress);
     autoDiscoverySender           = new Mock <IAutoDiscoverySender>();
     autoDiscoveryListener         = new Mock <IAutoDiscoveryListener>();
     heartBeatSenderConfigProvider = new Mock <IHeartBeatSenderConfigurationProvider>();
     heartBeatUri = new Uri("tcp://127.0.0.1:890");
     heartBeatSenderConfigProvider.Setup(m => m.GetHeartBeatAddress()).Returns(heartBeatUri);
     heartBeatInterval = TimeSpan.FromSeconds(5);
     heartBeatSenderConfigProvider.Setup(m => m.GetHeartBeatInterval()).Returns(heartBeatInterval);
     clusterMonitor = new ClusterMonitor(scaleOutConfigurationProvider.Object,
                                         autoDiscoverySender.Object,
                                         autoDiscoveryListener.Object,
                                         heartBeatSenderConfigProvider.Object,
                                         routeDiscovery.Object,
                                         securityProvider.Object,
                                         logger.Object);
 }
        public ClusterMonitor Create(bool start = true)
        {
            if (_role == NodeRole.StandAlone)
                return CreateStandAlone();

            var monitor = new ClusterMonitor(_role, _localAddress, _partnerAddress,
                state =>
                {
                    switch (state.Status)
                    {
                        case NodeStatus.Connecting:
                            if (_whenConnecting != null) _whenConnecting();
                            break;
                        case NodeStatus.Active:
                            if (_whenActive != null) _whenActive();
                            break;
                        case NodeStatus.Passive:
                            if (_whenPassive != null) _whenPassive();
                            break;
                        case NodeStatus.Stopped:
                            if (_whenStopped != null) _whenStopped();
                            break;
                    }
                }, _onClusterException, _confirmActivationFuncs, _partnerTimeout, _connectTimeout, _becomeActiveWhenPrimaryOnInitialConnectionTimeout);
            if (start) monitor.Start();
            return monitor;
        }
Esempio n. 3
0
        public ClusterController(ClientConfiguration clientConfig,
                                 Func <IConnectionPool, IIOService> ioServiceFactory,
                                 Func <PoolConfiguration, IPEndPoint, IConnectionPool> connectionPoolFactory,
                                 Func <string, string, IConnectionPool, ITypeTranscoder, ISaslMechanism> saslFactory,
                                 IByteConverter converter,
                                 ITypeTranscoder transcoder)
        {
            _clientConfig          = clientConfig;
            _ioServiceFactory      = ioServiceFactory;
            _connectionPoolFactory = connectionPoolFactory;
            _saslFactory           = saslFactory;
            Converter  = converter;
            Transcoder = transcoder;
            Initialize();

            if (clientConfig.EnableDeadServiceUriPing)
            {
                _clusterMonitor = new ClusterMonitor(this);
                _clusterMonitor.StartMonitoring();
            }

            LastConfigCheckedTime = DateTime.Now;
            if (Configuration.EnableConfigHeartBeat)
            {
                _configMonitor = new ConfigMonitor(this);
                _configMonitor.StartMonitoring();
            }

            _configThread = new Thread(ProcessConfig)
            {
                Name         = "CT",
                IsBackground = true
            };
            _configThread.Start();
        }
Esempio n. 4
0
 public Feed()
 {
     string address = ConfigurationManager.AppSettings["GatewayServerAddress"];
     _pushers = address.Split(';').Select(adr => new NetMqPusher(adr)).ToArray();
     _worker = new TaskWorker(GenerateFeed);
     _clusterMonitor = CreateCluster();
 }
Esempio n. 5
0
        public Feed()
        {
            string address = ConfigurationManager.AppSettings["GatewayServerAddress"];

            _pushers        = address.Split(';').Select(adr => new NetMqPusher(adr)).ToArray();
            _worker         = new TaskWorker(GenerateFeed);
            _clusterMonitor = CreateCluster();
        }
        public ClusterController(ClientConfiguration clientConfig,
                                 Func <IConnectionPool, IIOService> ioServiceFactory,
                                 Func <PoolConfiguration, IPEndPoint, IConnectionPool> connectionPoolFactory,
                                 Func <string, string, IIOService, ITypeTranscoder, ISaslMechanism> saslFactory,
                                 IByteConverter converter,
                                 ITypeTranscoder transcoder)
        {
            _clientConfig          = clientConfig;
            _ioServiceFactory      = ioServiceFactory;
            _connectionPoolFactory = connectionPoolFactory;
            _saslFactory           = saslFactory;
            Converter  = converter;
            Transcoder = transcoder;
            Initialize();

            if (clientConfig.EnableDeadServiceUriPing)
            {
                _clusterMonitor = new ClusterMonitor(this);
                _clusterMonitor.StartMonitoring();
            }
        }
Esempio n. 7
0
 public ClusterMonitorTests()
 {
     securityProvider = new Mock <ISecurityProvider>();
     domain           = Guid.NewGuid().ToString();
     securityProvider.Setup(m => m.GetAllowedDomains()).Returns(new[] { domain });
     securityProvider.Setup(m => m.GetDomain(It.IsAny <byte[]>())).Returns(domain);
     logger          = new Mock <ILogger>();
     routeDiscovery  = new Mock <IRouteDiscovery>();
     scaleOutAddress = new SocketEndpoint(new Uri("tcp://127.0.0.1:5000"), Guid.NewGuid().ToByteArray());
     scaleOutConfigurationProvider = new Mock <IScaleOutConfigurationProvider>();
     scaleOutConfigurationProvider.Setup(m => m.GetScaleOutAddress()).Returns(scaleOutAddress);
     autoDiscoverySender           = new Mock <IAutoDiscoverySender>();
     autoDiscoveryListener         = new Mock <IAutoDiscoveryListener>();
     heartBeatSenderConfigProvider = new Mock <IHeartBeatSenderConfigurationProvider>();
     heartBeatUri = new Uri("tcp://127.0.0.1:890");
     heartBeatSenderConfigProvider.Setup(m => m.GetHeartBeatAddress()).Returns(heartBeatUri);
     heartBeatInterval = TimeSpan.FromSeconds(5);
     heartBeatSenderConfigProvider.Setup(m => m.GetHeartBeatInterval()).Returns(heartBeatInterval);
     config = new ClusterMembershipConfiguration
     {
         RouteDiscovery = new RouteDiscoveryConfiguration
         {
             ClusterAutoDiscoveryStartDelay = TimeSpan.FromSeconds(1),
             ClusterAutoDiscoveryPeriod     = TimeSpan.FromSeconds(2),
             ClusterAutoDiscoveryStartDelayMaxMultiplier = 2,
             MaxAutoDiscoverySenderQueueLength           = 100
         }
     };
     clusterMonitor = new ClusterMonitor(scaleOutConfigurationProvider.Object,
                                         autoDiscoverySender.Object,
                                         autoDiscoveryListener.Object,
                                         heartBeatSenderConfigProvider.Object,
                                         routeDiscovery.Object,
                                         securityProvider.Object,
                                         config,
                                         logger.Object);
 }