コード例 #1
0
        public void NodesReadWriteTest()
        {
            var persistedNodes = _discoveryStorage.GetPersistedNodes();

            Assert.AreEqual(0, persistedNodes.Length);

            var nodes = new[]
            {
                _nodeFactory.CreateNode("192.1.1.1", 3441),
                _nodeFactory.CreateNode("192.1.1.2", 3442),
                _nodeFactory.CreateNode("192.1.1.3", 3443),
                _nodeFactory.CreateNode("192.1.1.4", 3444),
                _nodeFactory.CreateNode("192.1.1.5", 3445),
            };

            nodes[0].Description = "Test desc";
            nodes[4].Description = "Test desc 2";

            var managers = nodes.Select(CreateLifecycleManager).ToArray();

            _discoveryStorage.StartBatch();
            _discoveryStorage.UpdateNodes(managers);
            _discoveryStorage.Commit();

            persistedNodes = _discoveryStorage.GetPersistedNodes();
            foreach (var manager in managers)
            {
                var persistedNode = persistedNodes.FirstOrDefault(x => x.Node.Id.Equals(manager.ManagedNode.Id));
                Assert.IsNotNull(persistedNode);
                Assert.AreEqual(manager.ManagedNode.Port, persistedNode.Node.Port);
                Assert.AreEqual(manager.ManagedNode.Host, persistedNode.Node.Host);
                Assert.AreEqual(manager.ManagedNode.Description, persistedNode.Node.Description);
                Assert.AreEqual(manager.NodeStats.CurrentNodeReputation, persistedNode.PersistedReputation);
            }

            _discoveryStorage.StartBatch();
            _discoveryStorage.RemoveNodes(new[] { managers.First() });
            _discoveryStorage.Commit();

            persistedNodes = _discoveryStorage.GetPersistedNodes();
            foreach (var manager in managers.Take(1))
            {
                var persistedNode = persistedNodes.FirstOrDefault(x => x.Node.Id.Equals(manager.ManagedNode.Id));
                Assert.IsNull(persistedNode.Node);
            }

            foreach (var manager in managers.Skip(1))
            {
                var persistedNode = persistedNodes.FirstOrDefault(x => x.Node.Id.Equals(manager.ManagedNode.Id));
                Assert.IsNotNull(persistedNode);
                Assert.AreEqual(manager.ManagedNode.Port, persistedNode.Node.Port);
                Assert.AreEqual(manager.ManagedNode.Host, persistedNode.Node.Host);
                Assert.AreEqual(manager.ManagedNode.Description, persistedNode.Node.Description);
                Assert.AreEqual(manager.NodeStats.CurrentNodeReputation, persistedNode.PersistedReputation);
            }
        }
コード例 #2
0
ファイル: DiscoveryApp.cs プロジェクト: StateProof/nethermind
        private void RunDiscoveryCommit()
        {
            if (!_discoveryStorage.AnyPendingChange())
            {
                return;
            }

            _discoveryStorage.Commit();
            _discoveryStorage.StartBatch();
        }
コード例 #3
0
 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();
 }