Exemplo n.º 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);
            }
        }
Exemplo n.º 2
0
        private void AddPersistedNodes()
        {
            if (!_configurationProvider.IsDiscoveryNodesPersistenceOn)
            {
                return;
            }

            var nodes = _discoveryStorage.GetPersistedNodes();

            foreach (var node in nodes)
            {
                var manager = _discoveryManager.GetNodeLifecycleManager(node.Node, true);
                manager.NodeStats.CurrentPersistedNodeReputation = node.PersistedReputation;
                if (_logger.IsDebugEnabled)
                {
                    _logger.Debug($"Adding persisted node {node.Node.Id}@{node.Node.Host}:{node.Node.Port}");
                }
            }

            if (_logger.IsInfoEnabled)
            {
                _logger.Info($"Added persisted discovery nodes: {nodes.Length}");
            }
        }