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 SetUp()
        {
            NullLogManager     logManager     = NullLogManager.Instance;
            JsonConfigProvider configProvider = new JsonConfigProvider();

            _tempDir                  = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());
            _networkConfig            = configProvider.GetConfig <INetworkConfig>();
            _networkConfig.DbBasePath = _tempDir;
            _statsConfig              = configProvider.GetConfig <IStatsConfig>();

            _nodeFactory = new NodeFactory();
            _storage     = new NetworkStorage("test", _networkConfig, logManager, new PerfService(logManager));
        }
        public void Can_load_config_from_file()
        {
            var keystoreConfig = _configProvider.GetConfig <IKeyStoreConfig>();
            var networkConfig  = _configProvider.GetConfig <IDiscoveryConfig>();
            var jsonRpcConfig  = _configProvider.GetConfig <IJsonRpcConfig>();

            Assert.AreEqual(100, keystoreConfig.KdfparamsDklen);
            Assert.AreEqual("test", keystoreConfig.Cipher);

            Assert.AreEqual(2, jsonRpcConfig.EnabledModules.Count());
            new[] { ModuleType.Eth, ModuleType.Debug }.ToList().ForEach(x =>
            {
                Assert.IsTrue(jsonRpcConfig.EnabledModules.Contains(x.ToString()));
            });

            Assert.AreEqual(4, networkConfig.Concurrency);
        }
        public void TestLoadJsonConfig()
        {
            _configProvider.LoadJsonConfig("SampleJsonConfig.json");

            var keystoreConfig = _configProvider.GetConfig <IKeystoreConfig>();
            var networkConfig  = _configProvider.GetConfig <INetworkConfig>();
            var jsonRpcConfig  = _configProvider.GetConfig <IJsonRpcConfig>();
            var statsConfig    = _configProvider.GetConfig <IStatsConfig>();

            Assert.AreEqual(100, keystoreConfig.KdfparamsDklen);
            Assert.AreEqual("test", keystoreConfig.Cipher);

            Assert.AreEqual("test", jsonRpcConfig.JsonRpcVersion);
            Assert.AreEqual("UTF7", jsonRpcConfig.MessageEncoding);
            Assert.AreEqual(2, jsonRpcConfig.EnabledModules.Count());
            new[] { ModuleType.Eth, ModuleType.Shh }.ToList().ForEach(x =>
            {
                Assert.IsTrue(jsonRpcConfig.EnabledModules.Contains(x));
            });

            Assert.AreEqual(4, networkConfig.Concurrency);
            Assert.AreEqual(3, statsConfig.PenalizedReputationLocalDisconnectReasons.Length);
            new[] { DisconnectReason.UnexpectedIdentity, DisconnectReason.IncompatibleP2PVersion, DisconnectReason.BreachOfProtocol }
            .ToList().ForEach(x =>
            {
                Assert.IsTrue(statsConfig.PenalizedReputationLocalDisconnectReasons.Contains(x));
            });
            Assert.AreEqual(2, networkConfig.BootNodes.Length);

            var node1 = networkConfig.BootNodes.FirstOrDefault(x => x.NodeId == "testNodeId");

            Assert.IsNotNull(node1);
            Assert.AreEqual("testHist", node1.Host);
            Assert.AreEqual(43, node1.Port);

            var node2 = networkConfig.BootNodes.FirstOrDefault(x => x.NodeId == "testNodeId2");

            Assert.IsNotNull(node2);
            Assert.AreEqual("testHist2", node2.Host);
            Assert.AreEqual(44, node2.Port);
        }
Beispiel #5
0
        static DataLoader()
        {
            var configProvider = new JsonConfigProvider();

            Config = configProvider.GetConfig();

            var dataPath = Config.DataFilePath.Trim();
            var dataPathWithTrailingSlash = dataPath.EndsWith("/", StringComparison.OrdinalIgnoreCase) ||
                                            dataPath.EndsWith(@"\", StringComparison.OrdinalIgnoreCase) ? dataPath : $"{dataPath}/";

            BasePath = dataPathWithTrailingSlash;
        }
        public void Can_load_config_from_file()
        {
            var keystoreConfig = _configProvider.GetConfig <IKeyStoreConfig>();
            var networkConfig  = _configProvider.GetConfig <INetworkConfig>();
            var jsonRpcConfig  = _configProvider.GetConfig <IJsonRpcConfig>();
            var statsConfig    = _configProvider.GetConfig <IStatsConfig>();

            Assert.AreEqual(100, keystoreConfig.KdfparamsDklen);
            Assert.AreEqual("test", keystoreConfig.Cipher);

            Assert.AreEqual(2, jsonRpcConfig.EnabledModules.Count());
            new[] { ModuleType.Eth, ModuleType.Debug }.ToList().ForEach(x =>
            {
                Assert.IsTrue(jsonRpcConfig.EnabledModules.Contains(x));
            });

            Assert.AreEqual(4, networkConfig.Concurrency);
            Assert.AreEqual(3, statsConfig.PenalizedReputationLocalDisconnectReasons.Length);
            new[] { DisconnectReason.UnexpectedIdentity, DisconnectReason.IncompatibleP2PVersion, DisconnectReason.BreachOfProtocol }
            .ToList().ForEach(x =>
            {
                Assert.IsTrue(statsConfig.PenalizedReputationLocalDisconnectReasons.Contains(x));
            });

            NetworkNode[] nodes = NetworkNode.ParseNodes(networkConfig.Bootnodes);
            Assert.AreEqual(2, nodes.Length);

            var node1 = nodes[0];

            Assert.IsNotNull(node1);
            Assert.AreEqual("40.70.214.166", node1.Host);
            Assert.AreEqual(40303, node1.Port);

            var node2 = nodes[1];

            Assert.IsNotNull(node2);
            Assert.AreEqual("213.186.16.82", node2.Host);
            Assert.AreEqual(1345, node2.Port);
        }
        public void Can_load_config_from_file()
        {
            var keystoreConfig = _configProvider.GetConfig <IKeyStoreConfig>();
            var networkConfig  = _configProvider.GetConfig <IDiscoveryConfig>();
            var jsonRpcConfig  = _configProvider.GetConfig <IJsonRpcConfig>();
            var statsConfig    = _configProvider.GetConfig <IStatsConfig>();

            Assert.AreEqual(100, keystoreConfig.KdfparamsDklen);
            Assert.AreEqual("test", keystoreConfig.Cipher);

            Assert.AreEqual(2, jsonRpcConfig.EnabledModules.Count());
            new[] { ModuleType.Eth, ModuleType.Debug }.ToList().ForEach(x =>
            {
                Assert.IsTrue(jsonRpcConfig.EnabledModules.Contains(x.ToString()));
            });

            Assert.AreEqual(4, networkConfig.Concurrency);
            Assert.AreEqual(3, statsConfig.PenalizedReputationLocalDisconnectReasons.Length);
            new[] { DisconnectReason.UnexpectedIdentity, DisconnectReason.IncompatibleP2PVersion, DisconnectReason.BreachOfProtocol }
            .ToList().ForEach(x =>
            {
                Assert.IsTrue(statsConfig.PenalizedReputationLocalDisconnectReasons.Contains(x));
            });
        }
Beispiel #8
0
        protected async Task StartRunners(InitParams initParams)
        {
            try
            {
                //TODO find better way to enforce assemblies with config impl are loaded
                IKeystoreConfig kConfig; INetworkConfig nConfig; IJsonRpcConfig jConfig;

                var configProvider = new JsonConfigProvider();
                var logManager     = new NLogManager(initParams.LogFileName);
                //configProvider.LoadJsonConfig("");

                //discovering and setting local, remote ips for client machine
                var networkHelper = new NetworkHelper(Logger);
                var localHost     = networkHelper.GetLocalIp()?.ToString() ?? "127.0.0.1";
                var networkConfig = configProvider.GetConfig <NetworkConfig>();
                networkConfig.MasterExternalIp = localHost;
                networkConfig.MasterHost       = localHost;

                ChainSpecLoader chainSpecLoader = new ChainSpecLoader(new UnforgivingJsonSerializer());

                string path = initParams.ChainSpecPath;
                if (!Path.IsPathRooted(path))
                {
                    path = Path.Combine(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, path));
                }

                byte[]    chainSpecData = File.ReadAllBytes(path);
                ChainSpec chainSpec     = chainSpecLoader.Load(chainSpecData);

                //Setting trusted nodes
                var nodes = chainSpec.NetworkNodes.Select(GetNode).ToArray();
                networkConfig.TrustedPeers = nodes;
                networkConfig.BootNodes    = nodes;
                networkConfig.DbBasePath   = initParams.BaseDbPath;

                _ethereumRunner = new EthereumRunner(configProvider, networkHelper, logManager);
                await _ethereumRunner.Start(initParams);

                if (initParams.JsonRpcEnabled)
                {
                    Bootstrap.Instance.ConfigProvider   = configProvider;
                    Bootstrap.Instance.LogManager       = logManager;
                    Bootstrap.Instance.BlockchainBridge = _ethereumRunner.BlockchainBridge;
                    Bootstrap.Instance.EthereumSigner   = _ethereumRunner.EthereumSigner;

                    _jsonRpcRunner = new JsonRpcRunner(configProvider, Logger);
                    await _jsonRpcRunner.Start(initParams);
                }
                else
                {
                    if (Logger.IsInfoEnabled)
                    {
                        Logger.Info("Json RPC is disabled");
                    }
                }
            }
            catch (Exception e)
            {
                Logger.Error("Error while starting Nethermind.Runner", e);
                throw;
            }
        }