internal static RoundBasedRegisterTestSetup CreateRoundBasedRegister(IEnumerable <string> synod, string localNodeUri) { var appConfig = new RendezvousServiceConfiguration { Synod = new SynodConfiguration { Members = synod, LocalNode = localNodeUri, HeartBeatInterval = TimeSpan.FromSeconds(5), IntercomEndpoint = $"inproc://{Guid.NewGuid()}", MissingHeartBeatsBeforeReconnect = 4 }, Lease = new LeaseConfiguration { ClockDrift = TimeSpan.FromMilliseconds(10), MessageRoundtrip = TimeSpan.FromMilliseconds(100), NodeResponseTimeout = TimeSpan.FromMilliseconds(1000), MaxLeaseTimeSpan = TimeSpan.FromSeconds(3) } }; var socketConfig = new SocketConfiguration { ReceivingHighWatermark = 1000, SendingHighWatermark = 1000, Linger = TimeSpan.Zero }; var logger = new Mock <ILogger>(); var performanceCounterManager = new Mock <IPerformanceCounterManager <KinoPerformanceCounters> >(); var synodConfigProvider = new SynodConfigurationProvider(appConfig.Synod); var intercomMessageHub = new IntercomMessageHub(new SocketFactory(socketConfig), synodConfigProvider, performanceCounterManager.Object, logger.Object); var ballotGenerator = new BallotGenerator(appConfig.Lease); var roundBasedRegister = new RoundBasedRegister(intercomMessageHub, ballotGenerator, synodConfigProvider, appConfig.Lease, logger.Object); logger.Verify(m => m.Error(It.IsAny <object>()), Times.Never); return(new RoundBasedRegisterTestSetup(ballotGenerator, synodConfigProvider.LocalNode, roundBasedRegister)); }
private IRendezvousService Build() { var logger = resolver.Resolve <ILogger>(); var applicationConfig = resolver.Resolve <RendezvousServiceConfiguration>(); var socketFactory = new SocketFactory(applicationConfig.Socket); var synodConfigProvider = new SynodConfigurationProvider(applicationConfig.Synod); #if NET47 var instanceNameResolver = resolver.Resolve <IInstanceNameResolver>() ?? new InstanceNameResolver(); var performanceCounterManager = new PerformanceCounterManager <KinoPerformanceCounters>(instanceNameResolver, logger); #else var performanceCounterManager = default(IPerformanceCounterManager <KinoPerformanceCounters>); #endif var intercomMessageHub = new IntercomMessageHub(socketFactory, synodConfigProvider, performanceCounterManager, logger); var ballotGenerator = new BallotGenerator(applicationConfig.Lease); var roundBasedRegister = new RoundBasedRegister(intercomMessageHub, ballotGenerator, synodConfigProvider, applicationConfig.Lease, logger); var leaseProvider = new LeaseProvider(roundBasedRegister, ballotGenerator, applicationConfig.Lease, synodConfigProvider, logger); var serializer = new ProtobufMessageSerializer(); var configProvider = new RendezvousConfigurationProvider(applicationConfig.Rendezvous); var service = new RendezvousService(leaseProvider, synodConfigProvider, socketFactory, serializer, configProvider, performanceCounterManager, logger); return(service); }
internal static RoundBasedRegisterTestSetup CreateRoundBasedRegister(IEnumerable <string> synod, string localNodeUri) { var appConfig = new RendezvousServiceConfiguration { Synod = new SynodConfiguration { Members = synod, LocalNode = localNodeUri }, Lease = new LeaseConfiguration { ClockDrift = TimeSpan.FromMilliseconds(10), MessageRoundtrip = TimeSpan.FromMilliseconds(100), NodeResponseTimeout = TimeSpan.FromMilliseconds(1000), MaxLeaseTimeSpan = TimeSpan.FromSeconds(3) } }; var socketConfig = new SocketConfiguration { ReceivingHighWatermark = 1000, SendingHighWatermark = 1000, Linger = TimeSpan.Zero }; var synodConfig = new global::kino.Consensus.Configuration.SynodConfiguration(new SynodConfigurationProvider(appConfig.Synod)); var logger = new Mock <ILogger>(); var performanceCounterManager = new Mock <IPerformanceCounterManager <KinoPerformanceCounters> >(); var intercomMessageHub = new IntercomMessageHub(new SocketFactory(socketConfig), synodConfig, performanceCounterManager.Object, logger.Object); var ballotGenerator = new BallotGenerator(appConfig.Lease); var roundBasedRegister = new RoundBasedRegister(intercomMessageHub, ballotGenerator, synodConfig, appConfig.Lease, logger.Object); return(new RoundBasedRegisterTestSetup(ballotGenerator, synodConfig.LocalNode, roundBasedRegister, appConfig.Lease.MaxLeaseTimeSpan)); }