public void Initialize() { _discoveryManagerMock = Substitute.For <IDiscoveryManager>(); _discoveryConfigMock = Substitute.For <IDiscoveryConfig>(); NetworkNodeDecoder.Init(); SetupNodeIds(); var logManager = LimboLogs.Instance; _loggerMock = Substitute.For <ILogger>(); //setting config to store 3 nodes in a bucket and for table to have one bucket//setting config to store 3 nodes in a bucket and for table to have one bucket _configurationProvider = new ConfigProvider(); _networkConfig.ExternalIp = "99.10.10.66"; _networkConfig.LocalIp = "10.0.0.5"; IDiscoveryConfig discoveryConfig = _configurationProvider.GetConfig <IDiscoveryConfig>(); discoveryConfig.PongTimeout = 50; discoveryConfig.BucketSize = 3; discoveryConfig.BucketsCount = 1; _ipResolverMock = Substitute.For <IIPResolver>(); var calculator = new NodeDistanceCalculator(discoveryConfig); _nodeTable = new NodeTable(calculator, discoveryConfig, _networkConfig, logManager); _nodeTable.Initialize(TestItem.PublicKeyA); _nodeStatsMock = Substitute.For <INodeStats>(); _timestamper = Timestamper.Default; var evictionManager = new EvictionManager(_nodeTable, logManager); _evictionManagerMock = Substitute.For <IEvictionManager>(); var lifecycleFactory = new NodeLifecycleManagerFactory(_nodeTable, new DiscoveryMessageFactory(_timestamper), evictionManager, new NodeStatsManager(logManager), discoveryConfig, logManager); _udpClient = Substitute.For <IMessageSender>(); var discoveryDb = new SimpleFilePublicKeyDb("Test", "test", logManager); _discoveryManager = new DiscoveryManager(lifecycleFactory, _nodeTable, new NetworkStorage(discoveryDb, logManager), discoveryConfig, logManager, _ipResolverMock); _discoveryManager.MessageSender = _udpClient; _discoveryManagerMock = Substitute.For <IDiscoveryManager>(); }
public void Setup() { NetworkConfig networkConfig = new NetworkConfig(); networkConfig.ExternalIp = IPAddress.Broadcast.ToString(); _masterNode = new Node(TestItem.PublicKeyA, IPAddress.Broadcast.ToString(), 30000, false); DiscoveryConfig config = new DiscoveryConfig() { DiscoveryNewCycleWaitTime = 1 }; NodeDistanceCalculator distanceCalculator = new NodeDistanceCalculator(config); _nodeTable = new NodeTable( distanceCalculator, config, networkConfig, LimboLogs.Instance); DiscoveryMessageFactory messageFactory = new DiscoveryMessageFactory(Timestamper.Default); EvictionManager evictionManager = new EvictionManager(_nodeTable, LimboLogs.Instance); ITimerFactory timerFactory = Substitute.For <ITimerFactory>(); NodeStatsManager nodeStatsManager = new NodeStatsManager(timerFactory, LimboLogs.Instance); NodeLifecycleManagerFactory managerFactory = new NodeLifecycleManagerFactory( _nodeTable, messageFactory, evictionManager, nodeStatsManager, config, LimboLogs.Instance); DiscoveryManager manager = new DiscoveryManager( managerFactory, _nodeTable, new NetworkStorage(new MemDb(), LimboLogs.Instance), config, LimboLogs.Instance, new IPResolver(networkConfig, LimboLogs.Instance)); _nodesLocator = new NodesLocator(_nodeTable, manager, config, LimboLogs.Instance); }
public void Initialize() { NetworkNodeDecoder.Init(); var privateKey = new PrivateKey(TestPrivateKeyHex); _publicKey = privateKey.PublicKey; var logManager = LimboLogs.Instance; IDiscoveryConfig discoveryConfig = new DiscoveryConfig(); discoveryConfig.PongTimeout = 100; _messageSender = Substitute.For <IMessageSender>(); var calculator = new NodeDistanceCalculator(discoveryConfig); _networkConfig.ExternalIp = "99.10.10.66"; _networkConfig.LocalIp = "10.0.0.5"; _nodeTable = new NodeTable(calculator, discoveryConfig, _networkConfig, logManager); _nodeTable.Initialize(TestItem.PublicKeyA); _timestamper = Timestamper.Default; _ipResolver = new IPResolver(_networkConfig, logManager); var evictionManager = new EvictionManager(_nodeTable, logManager); ITimerFactory timerFactory = Substitute.For <ITimerFactory>(); var lifecycleFactory = new NodeLifecycleManagerFactory(_nodeTable, new DiscoveryMessageFactory(_timestamper), evictionManager, new NodeStatsManager(timerFactory, logManager), discoveryConfig, logManager); _nodes = new[] { new Node("192.168.1.18", 1), new Node("192.168.1.19", 2) }; IFullDb nodeDb = new SimpleFilePublicKeyDb("Test", "test_db", logManager); _discoveryManager = new DiscoveryManager(lifecycleFactory, _nodeTable, new NetworkStorage(nodeDb, logManager), discoveryConfig, logManager, _ipResolver); _discoveryManager.MessageSender = _messageSender; }
private Task InitDiscovery(InitParams initParams) { _logger.Info("Initializing Discovery"); if (initParams.DiscoveryPort.HasValue) { _configProvider.GetConfig <NetworkConfig>().MasterPort = initParams.DiscoveryPort.Value; } var privateKeyProvider = new PrivateKeyProvider(_privateKey); var discoveryMessageFactory = new DiscoveryMessageFactory(_configProvider); var nodeIdResolver = new NodeIdResolver(_signer); var msgSerializersProvider = new DiscoveryMsgSerializersProvider(_messageSerializationService, _signer, privateKeyProvider, discoveryMessageFactory, nodeIdResolver, _nodeFactory); msgSerializersProvider.RegisterDiscoverySerializers(); var nodeDistanceCalculator = new NodeDistanceCalculator(_configProvider); var nodeTable = new NodeTable(_nodeFactory, _keyStore, nodeDistanceCalculator, _configProvider, _logManager); var evictionManager = new EvictionManager(nodeTable, _logManager); var nodeLifeCycleFactory = new NodeLifecycleManagerFactory(_nodeFactory, nodeTable, discoveryMessageFactory, evictionManager, _nodeStatsProvider, _configProvider, _logManager); var discoveryStorage = new DiscoveryStorage(_configProvider, _nodeFactory, _logManager, _perfService); _discoveryManager = new DiscoveryManager(nodeLifeCycleFactory, _nodeFactory, nodeTable, discoveryStorage, _configProvider, _logManager); var nodesLocator = new NodesLocator(nodeTable, _discoveryManager, _configProvider, _logManager); _discoveryApp = new DiscoveryApp(nodesLocator, _discoveryManager, _nodeFactory, nodeTable, _messageSerializationService, _cryptoRandom, discoveryStorage, _configProvider, _logManager); _discoveryApp.Start(_privateKey.PublicKey); _logger.Info("Discovery initialization completed"); return(Task.CompletedTask); }
private void InitDiscovery() { if (!_initConfig.DiscoveryEnabled) { _discoveryApp = new NullDiscoveryApp(); return; } INetworkConfig networkConfig = _configProvider.GetConfig <INetworkConfig>(); networkConfig.MasterPort = _initConfig.DiscoveryPort; var privateKeyProvider = new SameKeyGenerator(_nodeKey); var discoveryMessageFactory = new DiscoveryMessageFactory(networkConfig, _timestamp); var nodeIdResolver = new NodeIdResolver(_ecdsa); IDiscoveryMsgSerializersProvider msgSerializersProvider = new DiscoveryMsgSerializersProvider( _messageSerializationService, _ecdsa, privateKeyProvider, discoveryMessageFactory, nodeIdResolver); msgSerializersProvider.RegisterDiscoverySerializers(); var nodeDistanceCalculator = new NodeDistanceCalculator(networkConfig); var nodeTable = new NodeTable( _keyStore, nodeDistanceCalculator, networkConfig, _logManager); var evictionManager = new EvictionManager( nodeTable, _logManager); var nodeLifeCycleFactory = new NodeLifecycleManagerFactory( nodeTable, discoveryMessageFactory, evictionManager, _nodeStatsManager, networkConfig, _logManager); var discoveryStorage = new NetworkStorage( DiscoveryNodesDbPath, networkConfig, _logManager, _perfService); var discoveryManager = new DiscoveryManager( nodeLifeCycleFactory, nodeTable, discoveryStorage, networkConfig, _logManager); var nodesLocator = new NodesLocator( nodeTable, discoveryManager, _configProvider, _logManager); _discoveryApp = new DiscoveryApp( nodesLocator, discoveryManager, nodeTable, _messageSerializationService, _cryptoRandom, discoveryStorage, networkConfig, _logManager, _perfService); _discoveryApp.Initialize(_nodeKey.PublicKey); }
private void InitDiscovery() { if (_ctx.NodeStatsManager == null) { throw new StepDependencyException(nameof(_ctx.NodeStatsManager)); } if (_ctx.Timestamper == null) { throw new StepDependencyException(nameof(_ctx.Timestamper)); } if (_ctx.NodeKey == null) { throw new StepDependencyException(nameof(_ctx.NodeKey)); } if (_ctx.CryptoRandom == null) { throw new StepDependencyException(nameof(_ctx.CryptoRandom)); } if (!_ctx.Config <IInitConfig>().DiscoveryEnabled) { _ctx.DiscoveryApp = new NullDiscoveryApp(); return; } IDiscoveryConfig discoveryConfig = _ctx.Config <IDiscoveryConfig>(); SameKeyGenerator privateKeyProvider = new SameKeyGenerator(_ctx.NodeKey.Unprotect()); DiscoveryMessageFactory discoveryMessageFactory = new DiscoveryMessageFactory(_ctx.Timestamper); NodeIdResolver nodeIdResolver = new NodeIdResolver(_ctx.EthereumEcdsa); IPResolver ipResolver = new IPResolver(_networkConfig, _ctx.LogManager); IDiscoveryMsgSerializersProvider msgSerializersProvider = new DiscoveryMsgSerializersProvider( _ctx._messageSerializationService, _ctx.EthereumEcdsa, privateKeyProvider, discoveryMessageFactory, nodeIdResolver); msgSerializersProvider.RegisterDiscoverySerializers(); NodeDistanceCalculator nodeDistanceCalculator = new NodeDistanceCalculator(discoveryConfig); NodeTable nodeTable = new NodeTable(nodeDistanceCalculator, discoveryConfig, _networkConfig, _ctx.LogManager); EvictionManager evictionManager = new EvictionManager(nodeTable, _ctx.LogManager); NodeLifecycleManagerFactory nodeLifeCycleFactory = new NodeLifecycleManagerFactory( nodeTable, discoveryMessageFactory, evictionManager, _ctx.NodeStatsManager, discoveryConfig, _ctx.LogManager); SimpleFilePublicKeyDb discoveryDb = new SimpleFilePublicKeyDb("DiscoveryDB", DiscoveryNodesDbPath.GetApplicationResourcePath(_ctx.Config <IInitConfig>().BaseDbPath), _ctx.LogManager); NetworkStorage discoveryStorage = new NetworkStorage( discoveryDb, _ctx.LogManager); DiscoveryManager discoveryManager = new DiscoveryManager( nodeLifeCycleFactory, nodeTable, discoveryStorage, discoveryConfig, _ctx.LogManager, ipResolver ); NodesLocator nodesLocator = new NodesLocator( nodeTable, discoveryManager, discoveryConfig, _ctx.LogManager); _ctx.DiscoveryApp = new DiscoveryApp( nodesLocator, discoveryManager, nodeTable, _ctx._messageSerializationService, _ctx.CryptoRandom, discoveryStorage, _networkConfig, discoveryConfig, _ctx.Timestamper, _ctx.LogManager); _ctx.DiscoveryApp.Initialize(_ctx.NodeKey.PublicKey); }
private void InitDiscovery() { _configProvider.GetConfig <INetworkConfig>().MasterPort = _initConfig.DiscoveryPort; var privateKeyProvider = new PrivateKeyProvider(_privateKey); var discoveryMessageFactory = new DiscoveryMessageFactory(_configProvider); var nodeIdResolver = new NodeIdResolver(_signer); IDiscoveryMsgSerializersProvider msgSerializersProvider = new DiscoveryMsgSerializersProvider( _messageSerializationService, _signer, privateKeyProvider, discoveryMessageFactory, nodeIdResolver, _nodeFactory); msgSerializersProvider.RegisterDiscoverySerializers(); var nodeDistanceCalculator = new NodeDistanceCalculator(_configProvider); var nodeTable = new NodeTable( _nodeFactory, _keyStore, nodeDistanceCalculator, _configProvider, _logManager); var evictionManager = new EvictionManager( nodeTable, _logManager); var nodeLifeCycleFactory = new NodeLifecycleManagerFactory( _nodeFactory, nodeTable, discoveryMessageFactory, evictionManager, _nodeStatsProvider, _configProvider, _logManager); var discoveryStorage = new NetworkStorage( DiscoveryNodesDbPath, _configProvider.GetConfig <INetworkConfig>(), _logManager, _perfService); _discoveryManager = new DiscoveryManager( nodeLifeCycleFactory, _nodeFactory, nodeTable, discoveryStorage, _configProvider, _logManager); var nodesLocator = new NodesLocator( nodeTable, _discoveryManager, _configProvider, _logManager); _discoveryApp = new DiscoveryApp( nodesLocator, _discoveryManager, _nodeFactory, nodeTable, _messageSerializationService, _cryptoRandom, discoveryStorage, _configProvider, _logManager, _perfService); _discoveryApp.Initialize(_privateKey.PublicKey); }
private void InitDiscovery() { if (!_initConfig.DiscoveryEnabled) { _discoveryApp = new NullDiscoveryApp(); return; } IDiscoveryConfig discoveryConfig = _configProvider.GetConfig <IDiscoveryConfig>(); var privateKeyProvider = new SameKeyGenerator(_nodeKey); var discoveryMessageFactory = new DiscoveryMessageFactory(_timestamper); var nodeIdResolver = new NodeIdResolver(_ethereumEcdsa); IDiscoveryMsgSerializersProvider msgSerializersProvider = new DiscoveryMsgSerializersProvider( _messageSerializationService, _ethereumEcdsa, privateKeyProvider, discoveryMessageFactory, nodeIdResolver); msgSerializersProvider.RegisterDiscoverySerializers(); var nodeDistanceCalculator = new NodeDistanceCalculator(discoveryConfig); var nodeTable = new NodeTable(nodeDistanceCalculator, discoveryConfig, _networkConfig, _logManager); var evictionManager = new EvictionManager(nodeTable, _logManager); var nodeLifeCycleFactory = new NodeLifecycleManagerFactory( nodeTable, discoveryMessageFactory, evictionManager, _nodeStatsManager, discoveryConfig, _logManager); var discoveryDb = new SimpleFilePublicKeyDb("DiscoveryDB", Path.Combine(_initConfig.BaseDbPath, DiscoveryNodesDbPath), _logManager); var discoveryStorage = new NetworkStorage( discoveryDb, _logManager); var discoveryManager = new DiscoveryManager( nodeLifeCycleFactory, nodeTable, discoveryStorage, discoveryConfig, _logManager); var nodesLocator = new NodesLocator( nodeTable, discoveryManager, discoveryConfig, _logManager); _discoveryApp = new DiscoveryApp( nodesLocator, discoveryManager, nodeTable, _messageSerializationService, _cryptoRandom, discoveryStorage, _networkConfig, discoveryConfig, _timestamper, _logManager, _perfService); _discoveryApp.Initialize(_nodeKey.PublicKey); }