コード例 #1
0
ファイル: ClientClusterGroup.cs プロジェクト: pks-os/gridgain
        /// <summary>
        /// Refresh projection nodes.
        /// </summary>
        /// <returns>Nodes.</returns>
        private IList <IClientClusterNode> RefreshNodes()
        {
            long oldTopVer = Interlocked.Read(ref _topVer);

            var topology = RequestTopologyInformation(oldTopVer);

            if (topology != null)
            {
                UpdateTopology(topology.Item1, topology.Item2);
                RequestNodesInfo(topology.Item2);
            }

            // No topology changes.
            Debug.Assert(_nodeIds != null, "At least one topology update should have occurred.");

            // Local lookup with a native predicate is a trade off between complexity and consistency.
            var nodesList = new List <IClientClusterNode>();

            foreach (Guid nodeId in _nodeIds)
            {
                IClientClusterNode node = _ignite.GetClientNode(nodeId);
                if (_predicate == null || _predicate(node))
                {
                    nodesList.Add(node);
                }
            }

            return(nodesList);
        }
コード例 #2
0
 /// <summary>
 /// Asserts that client and server node representations are equals.
 /// </summary>
 /// <param name="clusterNode"></param>
 /// <param name="clientNode"></param>
 private static void AssertNodesAreEqual(IClusterNode clusterNode, IClientClusterNode clientNode)
 {
     AssertExtensions.ReflectionEqual(clusterNode.Id, clientNode.Id);
     AssertExtensions.ReflectionEqual(clusterNode.Addresses, clientNode.Addresses);
     AssertExtensions.ReflectionEqual(clusterNode.HostNames, clientNode.HostNames);
     AssertExtensions.ReflectionEqual(clusterNode.IsClient, clientNode.IsClient);
     AssertExtensions.ReflectionEqual(clusterNode.IsDaemon, clientNode.IsDaemon);
     AssertExtensions.ReflectionEqual(clusterNode.IsLocal, clientNode.IsLocal);
     AssertExtensions.ReflectionEqual(clusterNode.Order, clientNode.Order);
     AssertExtensions.ReflectionEqual(clusterNode.Version, clientNode.Version);
     AssertExtensions.ReflectionEqual(clusterNode.Attributes, clientNode.Attributes);
 }
コード例 #3
0
        public void TestClusterGroupDoesNotUpdateTopologyIfNoChangesDetected()
        {
            var clusterGroup        = (ClientClusterGroup)Client.GetCluster();
            IClientClusterNode node = clusterGroup.GetNode();

            // Set the wrong ids, but keep the same topology version.
            var invalidNodeIds = new[] { Guid.NewGuid(), Guid.Empty };

            clusterGroup.UpdateTopology(1L, invalidNodeIds);

            Assert.AreSame(node, clusterGroup.GetNode());
        }