예제 #1
0
 public RouteDiscoveryTests()
 {
     autoDiscoverySender           = new Mock <IAutoDiscoverySender>();
     scaleOutConfigurationProvider = new Mock <IScaleOutConfigurationProvider>();
     scaleOutAddress = new SocketEndpoint("tcp://127.0.0.1:9090");
     scaleOutConfigurationProvider.Setup(m => m.GetScaleOutAddress()).Returns(scaleOutAddress);
     config = new ClusterMembershipConfiguration
     {
         RouteDiscovery = new RouteDiscoveryConfiguration
         {
             ClusterAutoDiscoveryStartDelay = TimeSpan.FromSeconds(1),
             ClusterAutoDiscoveryStartDelayMaxMultiplier = 2,
             MaxAutoDiscoverySenderQueueLength           = 100,
             MissingRoutesDiscoverySendingPeriod         = TimeSpan.FromSeconds(5),
             MaxMissingRouteDiscoveryRequestQueueLength  = 100,
             MissingRoutesDiscoveryRequestsPerSend       = 10
         }
     };
     securityProvider = new Mock <ISecurityProvider>();
     domain           = Guid.NewGuid().ToString();
     securityProvider.Setup(m => m.GetDomain(It.IsAny <byte[]>())).Returns(domain);
     logger         = new Mock <ILogger>();
     routeDiscovery = new RouteDiscovery(autoDiscoverySender.Object,
                                         scaleOutConfigurationProvider.Object,
                                         config,
                                         securityProvider.Object,
                                         logger.Object);
 }
예제 #2
0
        public AutoDiscoverySenderTests()
        {
            rendezvousCluster  = new Mock <IRendezvousCluster>();
            rendezvousEndpoint = new RendezvousEndpoint("tcp://*:8080", "tcp://*:9009");
            rendezvousCluster.Setup(m => m.GetCurrentRendezvousServer()).Returns(rendezvousEndpoint);
            socketFactory = new Mock <ISocketFactory>();
            socket        = new Mock <ISocket>();
            socketFactory.Setup(m => m.CreateDealerSocket()).Returns(socket.Object);
            performanceCounterManager = new Mock <IPerformanceCounterManager <KinoPerformanceCounters> >();
            var perfCounter = new Mock <IPerformanceCounter>();

            performanceCounterManager.Setup(m => m.GetCounter(It.IsAny <KinoPerformanceCounters>())).Returns(perfCounter.Object);
            logger = new Mock <ILogger>();
            config = new ClusterMembershipConfiguration
            {
                RouteDiscovery = new RouteDiscoveryConfiguration
                {
                    MaxAutoDiscoverySenderQueueLength = 100
                }
            };
            autoDiscoverSender = new AutoDiscoverySender(rendezvousCluster.Object,
                                                         socketFactory.Object,
                                                         config,
                                                         performanceCounterManager.Object,
                                                         logger.Object);
        }
예제 #3
0
 public AutoDiscoverySender(IRendezvousCluster rendezvousCluster,
                            ISocketFactory socketFactory,
                            ClusterMembershipConfiguration clusterMembershipConfiguration,
                            IPerformanceCounterManager <KinoPerformanceCounters> performanceCounterManager,
                            ILogger logger)
 {
     this.rendezvousCluster         = rendezvousCluster;
     this.socketFactory             = socketFactory;
     this.config                    = clusterMembershipConfiguration.RouteDiscovery;
     this.performanceCounterManager = performanceCounterManager;
     this.logger                    = logger;
     outgoingMessages               = new BlockingCollection <IMessage>(new ConcurrentQueue <IMessage>());
 }
예제 #4
0
 public RouteDiscovery(IAutoDiscoverySender autoDiscoverySender,
                       IScaleOutConfigurationProvider scaleOutConfigurationProvider,
                       ClusterMembershipConfiguration clusterMembershipConfiguration,
                       ISecurityProvider securityProvider,
                       ILogger logger)
 {
     this.securityProvider              = securityProvider;
     discoveryConfiguration             = clusterMembershipConfiguration.RouteDiscovery;
     this.autoDiscoverySender           = autoDiscoverySender;
     this.scaleOutConfigurationProvider = scaleOutConfigurationProvider;
     this.logger = logger;
     requests    = new HashedQueue <MessageRoute>(discoveryConfiguration.MaxMissingRouteDiscoveryRequestQueueLength);
 }
예제 #5
0
 public void Setup()
 {
     autoDiscoverySender           = new Mock <IAutoDiscoverySender>();
     scaleOutConfigurationProvider = new Mock <IScaleOutConfigurationProvider>();
     scaleOutAddress = new SocketEndpoint("tcp://127.0.0.1:9090");
     scaleOutConfigurationProvider.Setup(m => m.GetScaleOutAddress()).Returns(scaleOutAddress);
     config           = new ClusterMembershipConfiguration();
     securityProvider = new Mock <ISecurityProvider>();
     domain           = Guid.NewGuid().ToString();
     securityProvider.Setup(m => m.GetDomain(It.IsAny <byte[]>())).Returns(domain);
     logger         = new Mock <ILogger>();
     routeDiscovery = new RouteDiscovery(autoDiscoverySender.Object,
                                         scaleOutConfigurationProvider.Object,
                                         config,
                                         securityProvider.Object,
                                         logger.Object);
 }
예제 #6
0
 public AutoDiscoveryListener(IRendezvousCluster rendezvousCluster,
                              ISocketFactory socketFactory,
                              IScaleOutConfigurationProvider scaleOutConfigurationProvider,
                              ClusterMembershipConfiguration membershipConfiguration,
                              IPerformanceCounterManager <KinoPerformanceCounters> performanceCounterManager,
                              ILocalSocket <IMessage> localRouterSocket,
                              ILogger logger)
 {
     this.logger = logger;
     this.membershipConfiguration       = membershipConfiguration;
     this.performanceCounterManager     = performanceCounterManager;
     this.localRouterSocket             = localRouterSocket;
     this.rendezvousCluster             = rendezvousCluster;
     this.socketFactory                 = socketFactory;
     this.scaleOutConfigurationProvider = scaleOutConfigurationProvider;
     heartBeatReceived          = new ManualResetEvent(false);
     newRendezvousConfiguration = new ManualResetEvent(false);
 }
예제 #7
0
 public ClusterMonitor(IScaleOutConfigurationProvider scaleOutConfigurationProvider,
                       IAutoDiscoverySender autoDiscoverySender,
                       IAutoDiscoveryListener autoDiscoveryListener,
                       IHeartBeatSenderConfigurationProvider heartBeatConfigurationProvider,
                       IRouteDiscovery routeDiscovery,
                       ISecurityProvider securityProvider,
                       ClusterMembershipConfiguration clusterMembershipConfiguration,
                       ILogger logger)
 {
     this.scaleOutConfigurationProvider  = scaleOutConfigurationProvider;
     this.autoDiscoverySender            = autoDiscoverySender;
     this.autoDiscoveryListener          = autoDiscoveryListener;
     this.heartBeatConfigurationProvider = heartBeatConfigurationProvider;
     this.routeDiscovery       = routeDiscovery;
     this.securityProvider     = securityProvider;
     routeDiscoveryConfig      = clusterMembershipConfiguration.RouteDiscovery;
     this.logger               = logger;
     randomizer                = new C5Random();
     clusterRoutesRequestTimer = new Timer(_ => RequestClusterRoutes(), null, TimeSpan.FromMilliseconds(-1), TimeSpan.FromMilliseconds(-1));
 }
예제 #8
0
        public AutoDiscoveryListenerTests()
        {
            rendezvousCluster   = new Mock <IRendezvousCluster>();
            rendezvousEndpoints = new[]
            {
                new RendezvousEndpoint("tcp://*:8080", "tcp://*:9090"),
                new RendezvousEndpoint("tcp://*:8081", "tcp://*:9091")
            };
            currentRendezvousIndex = 0;
            rendezvousCluster.Setup(m => m.GetCurrentRendezvousServer()).Returns(GetCurrentRendezvous());
            rendezvousCluster.Setup(m => m.RotateRendezvousServers()).Callback(SetNextRendezvous);
            rendezvousCluster.Setup(m => m.Reconfigure(It.IsAny <IEnumerable <RendezvousEndpoint> >()))
            .Callback <IEnumerable <RendezvousEndpoint> >(SetNewRendezvous);
            socketFactory      = new Mock <ISocketFactory>();
            subscriptionSocket = new Mock <ISocket>();
            socketFactory.Setup(m => m.CreateSubscriberSocket()).Returns(subscriptionSocket.Object);
            scaleOutConfigurationProvider = new Mock <IScaleOutConfigurationProvider>();
            scaleOutAddress = new SocketEndpoint("tcp://*:7878", Guid.NewGuid().ToByteArray());
            scaleOutConfigurationProvider.Setup(m => m.GetScaleOutAddress()).Returns(scaleOutAddress);
            membershipConfiguration = new ClusterMembershipConfiguration
            {
                HeartBeatSilenceBeforeRendezvousFailover = TimeSpan.FromSeconds(1)
            };
            performanceCounterManager = new Mock <IPerformanceCounterManager <KinoPerformanceCounters> >();
            var perfCounter = new Mock <IPerformanceCounter>();

            performanceCounterManager.Setup(m => m.GetCounter(It.IsAny <KinoPerformanceCounters>())).Returns(perfCounter.Object);
            localRouterSocket     = new Mock <ILocalSocket <IMessage> >();
            logger                = new Mock <ILogger>();
            restartRequestHandler = new Mock <Action>();
            gateway               = new Barrier(1);
            autoDiscoveryListener = new AutoDiscoveryListener(rendezvousCluster.Object,
                                                              socketFactory.Object,
                                                              scaleOutConfigurationProvider.Object,
                                                              membershipConfiguration,
                                                              performanceCounterManager.Object,
                                                              localRouterSocket.Object,
                                                              logger.Object);
        }
예제 #9
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);
 }