public void Build() { var logger = resolver.Resolve <ILogger>(); var applicationConfig = resolver.Resolve <LeaseProviderServiceConfiguration>(); var socketFactory = new SocketFactory(resolver.Resolve <SocketConfiguration>()); var synodConfigProvider = new SynodConfigurationProvider(applicationConfig.LeaseProvider.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.LeaseProvider.Lease); kino = new kino(resolver); messageHub = kino.GetMessageHub(); leaseProvider = new LeaseProvider(intercomMessageHub, ballotGenerator, synodConfigProvider, applicationConfig.LeaseProvider.Lease, applicationConfig.LeaseProvider, messageHub, logger); var serializer = new ProtobufMessageSerializer(); kino.AssignActor(new LeaseProviderActor(leaseProvider, serializer, applicationConfig.LeaseProvider, logger)); kino.AssignActor(new InstanceDiscoveryActor(leaseProvider, applicationConfig.LeaseProvider)); kino.AssignActor(new InstanceBuilderActor(leaseProvider, applicationConfig.LeaseProvider)); kino.AssignActor(new ExceptionHandlerActor(logger)); }
public SynodConfigurationProviderTests() { synodConfig = new SynodConfiguration { LocalNode = "tcp://127.0.0.1:9090", IntercomEndpoint = "inproc://health", Members = 3.Produce(i => $"tcp://127.0.0.19{i}:9191") .ToList() }; synodConfigProvider = new SynodConfigurationProvider(synodConfig); }
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); }