public NodesLocator(INodeTable?nodeTable, IDiscoveryManager?discoveryManager, IDiscoveryConfig?discoveryConfig, ILogManager?logManager) { _logger = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager)); _nodeTable = nodeTable ?? throw new ArgumentNullException(nameof(nodeTable)); _discoveryConfig = discoveryConfig ?? throw new ArgumentNullException(nameof(discoveryConfig)); _discoveryManager = discoveryManager ?? throw new ArgumentNullException(nameof(discoveryManager)); }
public NodesLocator(INodeTable nodeTable, IDiscoveryManager discoveryManager, IConfigProvider configurationProvider, ILogManager logManager) { _logger = logManager?.GetClassLogger(); _configurationProvider = configurationProvider.GetConfig <INetworkConfig>(); _nodeTable = nodeTable; _discoveryManager = discoveryManager; }
public NodesLocator(INodeTable nodeTable, IDiscoveryManager discoveryManager, IDiscoveryConfigurationProvider configurationProvider, ILogger logger) { _nodeTable = nodeTable; _discoveryManager = discoveryManager; _configurationProvider = configurationProvider; _logger = logger; }
public void Initialize() { _logManager = new OneLoggerLogManager(new SimpleConsoleLogger()); _configurationProvider = new JsonConfigProvider(); ((NetworkConfig)_configurationProvider.GetConfig <NetworkConfig>()).DbBasePath = Path.Combine(Path.GetTempPath(), "PeerManagerTests"); if (!Directory.Exists(_configurationProvider.GetConfig <NetworkConfig>().DbBasePath)) { Directory.CreateDirectory(_configurationProvider.GetConfig <NetworkConfig>().DbBasePath); } _nodeFactory = new NodeFactory(); _localPeer = new TestRlpxPeer(); var keyProvider = new PrivateKeyProvider(new CryptoRandom()); var key = keyProvider.PrivateKey.PublicKey; _synchronizationManager = Substitute.For <ISynchronizationManager>(); var nodeTable = new NodeTable(_nodeFactory, Substitute.For <IKeyStore>(), new NodeDistanceCalculator(_configurationProvider), _configurationProvider, _logManager); nodeTable.Initialize(new NodeId(key)); _discoveryManager = new DiscoveryManager(new NodeLifecycleManagerFactory(_nodeFactory, nodeTable, new DiscoveryMessageFactory(_configurationProvider), Substitute.For <IEvictionManager>(), new NodeStatsProvider(_configurationProvider), _configurationProvider, _logManager), _nodeFactory, nodeTable, new DiscoveryStorage(_configurationProvider, _nodeFactory, _logManager, new PerfService(_logManager)), _configurationProvider, _logManager); _discoveryManager.MessageSender = Substitute.For <IMessageSender>(); _peerManager = new PeerManager(_localPeer, _discoveryManager, _synchronizationManager, new NodeStatsProvider(_configurationProvider), new PeerStorage(_configurationProvider, _nodeFactory, _logManager, new PerfService(_logManager)), _nodeFactory, _configurationProvider, new PerfService(_logManager), _logManager); }
public void Initialize() { NetworkNodeDecoder.Init(); PrivateKey privateKey = new(TestPrivateKeyHex); _publicKey = privateKey.PublicKey; LimboLogs?logManager = LimboLogs.Instance; IDiscoveryConfig discoveryConfig = new DiscoveryConfig(); discoveryConfig.PongTimeout = 100; _msgSender = Substitute.For <IMsgSender>(); NodeDistanceCalculator calculator = new(discoveryConfig); _networkConfig.ExternalIp = "99.10.10.66"; _networkConfig.LocalIp = "10.0.0.5"; _nodeTable = new NodeTable(calculator, discoveryConfig, _networkConfig, logManager); _nodeTable.Initialize(TestItem.PublicKeyA); EvictionManager evictionManager = new(_nodeTable, logManager); ITimerFactory timerFactory = Substitute.For <ITimerFactory>(); NodeLifecycleManagerFactory lifecycleFactory = new(_nodeTable, evictionManager, new NodeStatsManager(timerFactory, logManager), new NodeRecord(), discoveryConfig, Timestamper.Default, logManager); _nodes = new[] { new Node(TestItem.PublicKeyA, "192.168.1.18", 1), new Node(TestItem.PublicKeyB, "192.168.1.19", 2) }; IFullDb nodeDb = new SimpleFilePublicKeyDb("Test", "test_db", logManager); _discoveryManager = new DiscoveryManager(lifecycleFactory, _nodeTable, new NetworkStorage(nodeDb, logManager), discoveryConfig, logManager); _discoveryManager.MsgSender = _msgSender; }
public NettyDiscoveryHandler(IDiscoveryManager discoveryManager, IDatagramChannel channel, IMessageSerializationService messageSerializationService, ILogManager logManager) { _logger = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager)); _discoveryManager = discoveryManager ?? throw new ArgumentNullException(nameof(discoveryManager)); _channel = channel ?? throw new ArgumentNullException(nameof(channel)); _messageSerializationService = messageSerializationService ?? throw new ArgumentNullException(nameof(messageSerializationService)); }
public void Initialize() { SetupNodeIds(); var logManager = NullLogManager.Instance; //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 JsonConfigProvider(); ((NetworkConfig)_configurationProvider.GetConfig <NetworkConfig>()).PongTimeout = 50; ((NetworkConfig)_configurationProvider.GetConfig <NetworkConfig>()).BucketSize = 3; ((NetworkConfig)_configurationProvider.GetConfig <NetworkConfig>()).BucketsCount = 1; _nodeFactory = new NodeFactory(); var calculator = new NodeDistanceCalculator(_configurationProvider); _nodeTable = new NodeTable(_nodeFactory, new FileKeyStore(_configurationProvider, new JsonSerializer(logManager), new AesEncrypter(_configurationProvider, logManager), new CryptoRandom(), logManager), calculator, _configurationProvider, logManager); _nodeTable.Initialize(); var evictionManager = new EvictionManager(_nodeTable, logManager); var lifecycleFactory = new NodeLifecycleManagerFactory(_nodeFactory, _nodeTable, new DiscoveryMessageFactory(_configurationProvider), evictionManager, new NodeStatsProvider(_configurationProvider), _configurationProvider, logManager); _udpClient = Substitute.For <IMessageSender>(); _discoveryManager = new DiscoveryManager(lifecycleFactory, _nodeFactory, _nodeTable, new DiscoveryStorage(_configurationProvider, _nodeFactory, logManager, new PerfService(logManager)), _configurationProvider, logManager); _discoveryManager.MessageSender = _udpClient; }
public NettyDiscoveryHandler(ILogger logger, IDiscoveryManager discoveryManager, IDatagramChannel channel, IMessageSerializationService messageSerializationService) { _logger = logger; _discoveryManager = discoveryManager; _channel = channel; _messageSerializationService = messageSerializationService; }
//TODO Timer to periodically check active peers and move new to active based on max size and compatibility - stats and capabilities + update peers in synchronization manager //TODO Remove active and synch on disconnect //TODO Update Stats on disconnect, other events //TODO update runner to run discovery public PeerManager(IRlpxPeer localPeer, IDiscoveryManager discoveryManager, ISynchronizationManager synchronizationManager, INodeStatsProvider nodeStatsProvider, IPeerStorage peerStorage, INodeFactory nodeFactory, IConfigProvider configurationProvider, IPerfService perfService, ILogManager logManager) { _logger = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager)); _localPeer = localPeer; _configurationProvider = configurationProvider.GetConfig <NetworkConfig>(); _synchronizationManager = synchronizationManager; _nodeStatsProvider = nodeStatsProvider; _discoveryManager = discoveryManager; _perfService = perfService; _nodeFactory = nodeFactory; _isDiscoveryEnabled = _discoveryManager != null; if (_isDiscoveryEnabled) { discoveryManager.NodeDiscovered += async(s, e) => await OnNodeDiscovered(s, e); } localPeer.ConnectionInitialized += OnRemoteConnectionInitialized; synchronizationManager.SyncFailed += async(s, e) => await OnSyncFailed(s, e); _peerStorage = peerStorage; _peerStorage.StartBatch(); }
public void Initialize() { NetworkNodeDecoder.Init(); var privateKey = new PrivateKey(TestPrivateKeyHex); _publicKey = privateKey.PublicKey; var logManager = NullLogManager.Instance; IDiscoveryConfig discoveryConfig = new DiscoveryConfig(); discoveryConfig.PongTimeout = 100; IStatsConfig statsConfig = new StatsConfig(); _messageSender = Substitute.For <IMessageSender>(); var calculator = new NodeDistanceCalculator(discoveryConfig); _nodeTable = new NodeTable(calculator, discoveryConfig, logManager); _nodeTable.Initialize(TestItem.PublicKeyA); _timestamp = new Timestamp(); var evictionManager = new EvictionManager(_nodeTable, logManager); var lifecycleFactory = new NodeLifecycleManagerFactory(_nodeTable, new DiscoveryMessageFactory(_timestamp), evictionManager, new NodeStatsManager(statsConfig, logManager), discoveryConfig, logManager); _nodes = new[] { new Node("192.168.1.18", 1), new Node("192.168.1.19", 2) }; IFullDb nodeDb = new SimpleFilePublicKeyDb("test_db", logManager); _discoveryManager = new DiscoveryManager(lifecycleFactory, _nodeTable, new NetworkStorage(nodeDb, logManager), discoveryConfig, logManager); _discoveryManager.MessageSender = _messageSender; }
public void Initialize() { NetworkNodeDecoder.Init(); var privateKey = new PrivateKey(TestPrivateKeyHex); _publicKey = privateKey.PublicKey; var logManager = NullLogManager.Instance; IKeyStoreConfig keyStoreConfig = new KeyStoreConfig(); INetworkConfig networkConfig = new NetworkConfig(); networkConfig.PongTimeout = 100; IStatsConfig statsConfig = new StatsConfig(); _messageSender = Substitute.For <IMessageSender>(); var calculator = new NodeDistanceCalculator(networkConfig); _nodeTable = new NodeTable(new FileKeyStore(keyStoreConfig, new EthereumJsonSerializer(), new AesEncrypter(keyStoreConfig, logManager), new CryptoRandom(), logManager), calculator, networkConfig, logManager); _nodeTable.Initialize(TestItem.PublicKeyA); _timestamp = new Timestamp(); var evictionManager = new EvictionManager(_nodeTable, logManager); var lifecycleFactory = new NodeLifecycleManagerFactory(_nodeTable, new DiscoveryMessageFactory(networkConfig, _timestamp), evictionManager, new NodeStatsManager(statsConfig, logManager), networkConfig, logManager); _nodes = new[] { new Node("192.168.1.18", 1), new Node("192.168.1.19", 2) }; _discoveryManager = new DiscoveryManager(lifecycleFactory, _nodeTable, new NetworkStorage("test", networkConfig, logManager, new PerfService(logManager)), networkConfig, logManager); _discoveryManager.MessageSender = _messageSender; }
public void Initialize() { NetworkNodeDecoder.Init(); SetupNodeIds(); var logManager = NullLogManager.Instance; //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(); IDiscoveryConfig discoveryConfig = _configurationProvider.GetConfig <IDiscoveryConfig>(); discoveryConfig.PongTimeout = 50; discoveryConfig.BucketSize = 3; discoveryConfig.BucketsCount = 1; IStatsConfig statsConfig = _configurationProvider.GetConfig <IStatsConfig>(); var calculator = new NodeDistanceCalculator(discoveryConfig); _nodeTable = new NodeTable(calculator, discoveryConfig, logManager); _nodeTable.Initialize(TestItem.PublicKeyA); _timestamp = new Timestamp(); var evictionManager = new EvictionManager(_nodeTable, logManager); var lifecycleFactory = new NodeLifecycleManagerFactory(_nodeTable, new DiscoveryMessageFactory(_timestamp), evictionManager, new NodeStatsManager(statsConfig, logManager), discoveryConfig, logManager); _udpClient = Substitute.For <IMessageSender>(); var discoveryDb = new SimpleFilePublicKeyDb("test", logManager); _discoveryManager = new DiscoveryManager(lifecycleFactory, _nodeTable, new NetworkStorage(discoveryDb, logManager), discoveryConfig, logManager); _discoveryManager.MessageSender = _udpClient; }
public void Initialize() { var privateKey = new PrivateKey(TestPrivateKeyHex); _publicKey = privateKey.PublicKey; var logManager = NullLogManager.Instance; //var config = new NetworkConfigurationProvider(new NetworkHelper(logger)) { PongTimeout = 100 }; var config = new JsonConfigProvider(); var networkConfig = config.GetConfig <INetworkConfig>(); networkConfig.PongTimeout = 100; var statsConfig = config.GetConfig <IStatsConfig>(); _messageSender = Substitute.For <IMessageSender>(); _nodeFactory = new NodeFactory(); var calculator = new NodeDistanceCalculator(config); _nodeTable = new NodeTable(_nodeFactory, new FileKeyStore(config, new JsonSerializer(logManager), new AesEncrypter(config, logManager), new CryptoRandom(), logManager), calculator, config, logManager); _nodeTable.Initialize(); var evictionManager = new EvictionManager(_nodeTable, logManager); var lifecycleFactory = new NodeLifecycleManagerFactory(_nodeFactory, _nodeTable, new DiscoveryMessageFactory(config), evictionManager, new NodeStatsProvider(statsConfig, _nodeFactory, logManager), config, logManager); _nodes = new[] { _nodeFactory.CreateNode("192.168.1.18", 1), _nodeFactory.CreateNode("192.168.1.19", 2) }; _discoveryManager = new DiscoveryManager(lifecycleFactory, _nodeFactory, _nodeTable, new NetworkStorage("test", networkConfig, logManager, new PerfService(logManager)), config, logManager); _discoveryManager.MessageSender = _messageSender; }
public void Initialize() { NetworkNodeDecoder.Init(); SetupNodeIds(); var logManager = NullLogManager.Instance; //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(); INetworkConfig networkConfig = _configurationProvider.GetConfig <INetworkConfig>(); networkConfig.PongTimeout = 50; networkConfig.BucketSize = 3; networkConfig.BucketsCount = 1; IKeyStoreConfig keyStoreConfig = _configurationProvider.GetConfig <IKeyStoreConfig>(); IStatsConfig statsConfig = _configurationProvider.GetConfig <IStatsConfig>(); var calculator = new NodeDistanceCalculator(networkConfig); _nodeTable = new NodeTable(new FileKeyStore(keyStoreConfig, new EthereumJsonSerializer(), new AesEncrypter(keyStoreConfig, logManager), new CryptoRandom(), logManager), calculator, networkConfig, logManager); _nodeTable.Initialize(TestItem.PublicKeyA); _timestamp = new Timestamp(); var evictionManager = new EvictionManager(_nodeTable, logManager); var lifecycleFactory = new NodeLifecycleManagerFactory(_nodeTable, new DiscoveryMessageFactory(networkConfig, _timestamp), evictionManager, new NodeStatsManager(statsConfig, logManager), networkConfig, logManager); _udpClient = Substitute.For <IMessageSender>(); _discoveryManager = new DiscoveryManager(lifecycleFactory, _nodeTable, new NetworkStorage("test", networkConfig, logManager, new PerfService(logManager)), networkConfig, logManager); _discoveryManager.MessageSender = _udpClient; }
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); var lifecycleFactory = new NodeLifecycleManagerFactory(_nodeTable, new DiscoveryMessageFactory(_timestamper), evictionManager, new NodeStatsManager(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; }
public DiscoveryApp( INodesLocator nodesLocator, IDiscoveryManager discoveryManager, INodeTable nodeTable, IMessageSerializationService messageSerializationService, ICryptoRandom cryptoRandom, INetworkStorage discoveryStorage, INetworkConfig networkConfig, IDiscoveryConfig discoveryConfig, ITimestamper timestamper, ILogManager logManager, IPerfService perfService) { _logManager = logManager ?? throw new ArgumentNullException(nameof(logManager)); _logger = _logManager.GetClassLogger(); _perfService = perfService ?? throw new ArgumentNullException(nameof(perfService)); _discoveryConfig = discoveryConfig ?? throw new ArgumentNullException(nameof(discoveryConfig)); _timestamper = timestamper ?? throw new ArgumentNullException(nameof(timestamper)); _nodesLocator = nodesLocator ?? throw new ArgumentNullException(nameof(nodesLocator)); _discoveryManager = discoveryManager ?? throw new ArgumentNullException(nameof(discoveryManager)); _nodeTable = nodeTable ?? throw new ArgumentNullException(nameof(nodeTable)); _messageSerializationService = messageSerializationService ?? throw new ArgumentNullException(nameof(messageSerializationService)); _cryptoRandom = cryptoRandom ?? throw new ArgumentNullException(nameof(cryptoRandom)); _discoveryStorage = discoveryStorage ?? throw new ArgumentNullException(nameof(discoveryStorage)); _networkConfig = networkConfig ?? throw new ArgumentNullException(nameof(networkConfig)); _discoveryStorage.StartBatch(); }
/// <summary> /// The discovery manager instance for any discovery related operations inside of the test host. /// </summary> /// <returns>The discovery manager.</returns> public IDiscoveryManager GetDiscoveryManager() { if (this.discoveryManager == null) { this.discoveryManager = new DiscoveryManager(); } return(this.discoveryManager); }
public NodeLifecycleManager(Node node, IDiscoveryManager discoveryManager, INodeTable nodeTable, ILogger logger, IConfigProvider configurationProvider, IDiscoveryMessageFactory discoveryMessageFactory, IEvictionManager evictionManager, INodeStats nodeStats) { _discoveryManager = discoveryManager; _nodeTable = nodeTable; _logger = logger; _configurationProvider = configurationProvider.GetConfig <NetworkConfig>(); _discoveryMessageFactory = discoveryMessageFactory; _evictionManager = evictionManager; NodeStats = nodeStats; ManagedNode = node; UpdateState(NodeLifecycleState.New); }
public NodeLifecycleManager(Node node, IDiscoveryManager discoveryManager, INodeTable nodeTable, IDiscoveryMessageFactory discoveryMessageFactory, IEvictionManager evictionManager, INodeStats nodeStats, IDiscoveryConfig discoveryConfig, ILogger logger) { _discoveryManager = discoveryManager; _nodeTable = nodeTable; _logger = logger; _discoveryConfig = discoveryConfig; _discoveryMessageFactory = discoveryMessageFactory; _evictionManager = evictionManager; NodeStats = nodeStats; ManagedNode = node; UpdateState(NodeLifecycleState.New); }
public void Initialize() { NetworkNodeDecoder.Init(); _timestamp = new Timestamp(); _logManager = new OneLoggerLogManager(new SimpleConsoleLogger()); _configurationProvider = new ConfigProvider(); INetworkConfig networkConfig = _configurationProvider.GetConfig <INetworkConfig>(); networkConfig.DbBasePath = Path.Combine(Path.GetTempPath(), "PeerManagerTests"); networkConfig.IsActivePeerTimerEnabled = false; networkConfig.IsDiscoveryNodesPersistenceOn = false; networkConfig.IsPeersPersistenceOn = false; if (!Directory.Exists(networkConfig.DbBasePath)) { Directory.CreateDirectory(networkConfig.DbBasePath); } var syncManager = Substitute.For <ISynchronizationManager>(); Block genesisBlock = Build.A.Block.Genesis.TestObject; syncManager.Head.Returns(genesisBlock.Header); syncManager.Genesis.Returns(genesisBlock.Header); _nodeFactory = new NodeFactory(LimboLogs.Instance); _localPeer = new TestRlpxPeer(); var keyProvider = new PrivateKeyGenerator(new CryptoRandom()); var key = keyProvider.Generate().PublicKey; _synchronizationManager = Substitute.For <ISynchronizationManager>(); IStatsConfig statsConfig = _configurationProvider.GetConfig <IStatsConfig>(); var nodeTable = new NodeTable(_nodeFactory, Substitute.For <IKeyStore>(), new NodeDistanceCalculator(networkConfig), networkConfig, _logManager); nodeTable.Initialize(new NodeId(key)); _discoveryManager = new DiscoveryManager(new NodeLifecycleManagerFactory(_nodeFactory, nodeTable, new DiscoveryMessageFactory(networkConfig, _timestamp), Substitute.For <IEvictionManager>(), new NodeStatsProvider(_configurationProvider.GetConfig <IStatsConfig>(), _nodeFactory, _logManager, true), networkConfig, _logManager), _nodeFactory, nodeTable, new NetworkStorage("test", networkConfig, _logManager, new PerfService(_logManager)), networkConfig, _logManager); _discoveryManager.MessageSender = Substitute.For <IMessageSender>(); _transactionPool = NullTransactionPool.Instance; _blockTree = Substitute.For <IBlockTree>(); var app = new DiscoveryApp(new NodesLocator(nodeTable, _discoveryManager, _configurationProvider, _logManager), _discoveryManager, _nodeFactory, nodeTable, Substitute.For <IMessageSerializationService>(), new CryptoRandom(), Substitute.For <INetworkStorage>(), networkConfig, _logManager, new PerfService(_logManager)); app.Initialize(key); var sessionLogger = new PeerSessionLogger(_logManager, _configurationProvider, new PerfService(_logManager)); sessionLogger.Init(Path.GetTempPath()); var networkStorage = new NetworkStorage("test", networkConfig, _logManager, new PerfService(_logManager)); _peerManager = new PeerManager(_localPeer, app, _synchronizationManager, new NodeStatsProvider(statsConfig, _nodeFactory, _logManager, true), networkStorage, _nodeFactory, _configurationProvider, new PerfService(_logManager), _transactionPool, _logManager, sessionLogger); _peerManager.Init(true); }
public NettyDiscoveryHandler( IDiscoveryManager?discoveryManager, IDatagramChannel?channel, IMessageSerializationService?msgSerializationService, ITimestamper?timestamper, ILogManager?logManager) { _logger = logManager?.GetClassLogger <NettyDiscoveryHandler>() ?? throw new ArgumentNullException(nameof(logManager)); _discoveryManager = discoveryManager ?? throw new ArgumentNullException(nameof(discoveryManager)); _channel = channel ?? throw new ArgumentNullException(nameof(channel)); _msgSerializationService = msgSerializationService ?? throw new ArgumentNullException(nameof(msgSerializationService)); _timestamper = timestamper ?? throw new ArgumentNullException(nameof(timestamper)); }
private async Task StartUdpChannel(string address, int port, IDiscoveryManager discoveryManager, IMessageSerializationService service) { var group = new MultithreadEventLoopGroup(1); var bootstrap = new Bootstrap(); bootstrap .Group(group) .Channel <SocketDatagramChannel>() .Handler(new ActionChannelInitializer <IDatagramChannel>(x => InitializeChannel(x, discoveryManager, service))); _channels.Add(await bootstrap.BindAsync(IPAddress.Parse(address), port)); }
public DiscoveryApp(IDiscoveryConfigurationProvider configurationProvider, INodesLocator nodesLocator, ILogger logger, IDiscoveryManager discoveryManager, INodeFactory nodeFactory, INodeTable nodeTable, IMessageSerializationService messageSerializationService, ICryptoRandom cryptoRandom, IDiscoveryStorage discoveryStorage) { _configurationProvider = configurationProvider; _nodesLocator = nodesLocator; _logger = logger; _discoveryManager = discoveryManager; _nodeFactory = nodeFactory; _nodeTable = nodeTable; _messageSerializationService = messageSerializationService; _cryptoRandom = cryptoRandom; _discoveryStorage = discoveryStorage; _discoveryStorage.StartBatch(); }
private void InitializeChannel(IDatagramChannel channel, IDiscoveryManager discoveryManager, IMessageSerializationService service) { var handler = new NettyDiscoveryHandler(discoveryManager, channel, service, new Timestamper(), NullLogManager.Instance); handler.OnChannelActivated += (x, y) => { _channelActivatedCounter++; }; _discoveryHandlers.Add(handler); discoveryManager.MessageSender = handler; channel.Pipeline .AddLast(new LoggingHandler(DotNetty.Handlers.Logging.LogLevel.TRACE)) .AddLast(handler); }
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>(); IStatsConfig statsConfig = _configurationProvider.GetConfig <IStatsConfig>(); 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(statsConfig, 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() { _discoveryManagerMock = Substitute.For <IDiscoveryManager>(); _discoveryConfigMock = Substitute.For <IDiscoveryConfig>(); NetworkNodeDecoder.Init(); SetupNodeIds(); LimboLogs?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 IConfigProvider 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; NodeDistanceCalculator calculator = new(discoveryConfig); _nodeTable = new NodeTable(calculator, discoveryConfig, _networkConfig, logManager); _nodeTable.Initialize(TestItem.PublicKeyA); _nodeStatsMock = Substitute.For <INodeStats>(); EvictionManager evictionManager = new(_nodeTable, logManager); _evictionManagerMock = Substitute.For <IEvictionManager>(); ITimerFactory timerFactory = Substitute.For <ITimerFactory>(); NodeLifecycleManagerFactory lifecycleFactory = new(_nodeTable, evictionManager, new NodeStatsManager(timerFactory, logManager), new NodeRecord(), discoveryConfig, Timestamper.Default, logManager); IMsgSender udpClient = Substitute.For <IMsgSender>(); SimpleFilePublicKeyDb discoveryDb = new("Test", "test", logManager); _discoveryManager = new DiscoveryManager(lifecycleFactory, _nodeTable, new NetworkStorage(discoveryDb, logManager), discoveryConfig, logManager); _discoveryManager.MsgSender = udpClient; _discoveryManagerMock = Substitute.For <IDiscoveryManager>(); }
//TODO Timer to periodically check active peers and move new to active based on max size and compatibility - stats and capabilities + update peers in synchronization manager //TODO Remove active and synch on disconnect //TODO Update Stats on disconnect, other events //TODO Move Discover to Network //TODO update runner to run discovery public PeerManager(IRlpxPeer localPeer, IDiscoveryManager discoveryManager, ILogger logger, IDiscoveryConfigurationProvider configurationProvider, ISynchronizationManager synchronizationManager, INodeStatsProvider nodeStatsProvider, IPeerStorage peerStorage, IPerfService perfService) { _localPeer = localPeer; _logger = logger; _configurationProvider = configurationProvider; _synchronizationManager = synchronizationManager; _nodeStatsProvider = nodeStatsProvider; _discoveryManager = discoveryManager; _perfService = perfService; _isDiscoveryEnabled = _discoveryManager != null; if (_isDiscoveryEnabled) { discoveryManager.NodeDiscovered += async(s, e) => await OnNodeDiscovered(s, e); } localPeer.ConnectionInitialized += OnRemoteConnectionInitialized; _peerStorage = peerStorage; _peerStorage.StartBatch(); }
public NodeLifecycleManager(Node node, IDiscoveryManager discoveryManager, INodeTable nodeTable, IEvictionManager evictionManager, INodeStats nodeStats, NodeRecord nodeRecord, IDiscoveryConfig discoveryConfig, ITimestamper timestamper, ILogger logger) { _discoveryManager = discoveryManager ?? throw new ArgumentNullException(nameof(discoveryManager)); _nodeTable = nodeTable ?? throw new ArgumentNullException(nameof(nodeTable)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); _discoveryConfig = discoveryConfig ?? throw new ArgumentNullException(nameof(discoveryConfig)); _timestamper = timestamper ?? throw new ArgumentNullException(nameof(timestamper)); _evictionManager = evictionManager ?? throw new ArgumentNullException(nameof(evictionManager)); _nodeRecord = nodeRecord ?? throw new ArgumentNullException(nameof(nodeRecord)); NodeStats = nodeStats ?? throw new ArgumentNullException(nameof(nodeStats)); ManagedNode = node; UpdateState(NodeLifecycleState.New); }
public async Task Initialize() { _logManager = new OneLoggerLogManager(new SimpleConsoleLogger()); _configurationProvider = new JsonConfigProvider(); ((NetworkConfig)_configurationProvider.GetConfig <INetworkConfig>()).DbBasePath = Path.Combine(Path.GetTempPath(), "PeerManagerTests"); if (!Directory.Exists(_configurationProvider.GetConfig <INetworkConfig>().DbBasePath)) { Directory.CreateDirectory(_configurationProvider.GetConfig <INetworkConfig>().DbBasePath); } var serializationService = Build.A.SerializationService().WithEncryptionHandshake().WithP2P().WithEth().TestObject; var syncManager = Substitute.For <ISynchronizationManager>(); Block genesisBlock = Build.A.Block.Genesis.TestObject; syncManager.Head.Returns(genesisBlock.Header); syncManager.Genesis.Returns(genesisBlock.Header); _nodeFactory = new NodeFactory(); _localPeer = new TestRlpxPeer(); var keyProvider = new PrivateKeyProvider(new CryptoRandom()); var key = keyProvider.PrivateKey.PublicKey; _synchronizationManager = Substitute.For <ISynchronizationManager>(); var nodeTable = new NodeTable(_nodeFactory, Substitute.For <IKeyStore>(), new NodeDistanceCalculator(_configurationProvider), _configurationProvider, _logManager); nodeTable.Initialize(new NodeId(key)); INetworkConfig networkConfig = _configurationProvider.GetConfig <INetworkConfig>(); IStatsConfig statsConfig = _configurationProvider.GetConfig <IStatsConfig>(); _discoveryManager = new DiscoveryManager(new NodeLifecycleManagerFactory(_nodeFactory, nodeTable, new DiscoveryMessageFactory(_configurationProvider), Substitute.For <IEvictionManager>(), new NodeStatsProvider(_configurationProvider.GetConfig <IStatsConfig>(), _nodeFactory, _logManager), _configurationProvider, _logManager), _nodeFactory, nodeTable, new NetworkStorage("test", networkConfig, _logManager, new PerfService(_logManager)), _configurationProvider, _logManager); _discoveryManager.MessageSender = Substitute.For <IMessageSender>(); var networkStorage = new NetworkStorage("test", networkConfig, _logManager, new PerfService(_logManager)); _peerManager = new PeerManager(_localPeer, _discoveryManager, _synchronizationManager, new NodeStatsProvider(statsConfig, _nodeFactory, _logManager), networkStorage, _nodeFactory, _configurationProvider, new PerfService(_logManager), _logManager); _peerManager.Init(true); }
public DiscoveryApp( INodesLocator nodesLocator, IDiscoveryManager discoveryManager, INodeTable nodeTable, IMessageSerializationService messageSerializationService, ICryptoRandom cryptoRandom, INetworkStorage discoveryStorage, INetworkConfig networkConfig, ILogManager logManager, IPerfService perfService) { _logManager = logManager; _perfService = perfService; _logger = _logManager.GetClassLogger(); _networkConfig = networkConfig; _nodesLocator = nodesLocator; _discoveryManager = discoveryManager; _nodeTable = nodeTable; _messageSerializationService = messageSerializationService; _cryptoRandom = cryptoRandom; _discoveryStorage = discoveryStorage; _discoveryStorage.StartBatch(); }