Esempio n. 1
0
        /// <summary>
        /// Verifies received messages against expected messages.
        /// </summary>
        /// <param name="cluster">Cluster.</param>
        /// <param name="expectedMessages">Expected messages.</param>
        /// <param name="resultFunc">Result transform function.</param>
        /// <param name="expectedRepeat">Expected repeat count.</param>
        public static void VerifyReceive(IClusterGroup cluster, IEnumerable <string> expectedMessages,
                                         Func <IEnumerable <string>, IEnumerable <string> > resultFunc, int expectedRepeat)
        {
            expectedMessages = expectedMessages.SelectMany(x => Enumerable.Repeat(x, expectedRepeat)).ToArray();
            var expectedMessagesStr = string.Join(", ", expectedMessages);

            // check if expected message count has been received; Wait returns false if there were none.
            Assert.IsTrue(ReceivedEvent.Wait(MessageTimeout),
                          string.Format("expectedMessages: {0}, expectedRepeat: {1}, remaining: {2}",
                                        expectedMessagesStr, expectedRepeat, ReceivedEvent.CurrentCount));

            var receivedMessages = ReceivedMessages.ToArray();
            var actualMessages   = resultFunc(receivedMessages.Select(m => m.Message)).ToArray();

            CollectionAssert.AreEqual(
                expectedMessages,
                actualMessages,
                string.Format("Expected messages: '{0}', actual messages: '{1}', expectedRepeat: {2}",
                              expectedMessagesStr,
                              string.Join(", ", receivedMessages.Select(x => x.ToString())),
                              expectedRepeat));

            // check that all messages came from local node.
            var localNodeId = cluster.Ignite.GetCluster().GetLocalNode().Id;

            Assert.AreEqual(localNodeId, ReceivedMessages.Select(m => m.NodeId).Distinct().Single());

            AssertFailures();
        }
Esempio n. 2
0
        public void TestForLocal()
        {
            IClusterGroup prj = _grid1.GetCluster().ForLocal();

            Assert.AreEqual(1, prj.GetNodes().Count);
            Assert.AreEqual(_grid1.GetCluster().GetLocalNode(), prj.GetNodes().First());
        }
Esempio n. 3
0
        /// <summary>
        /// Initializes a new instance of the <see cref="Events" /> class.
        /// </summary>
        /// <param name="target">Target.</param>
        /// <param name="clusterGroup">Cluster group.</param>
        public Events(IPlatformTargetInternal target, IClusterGroup clusterGroup)
            : base(target)
        {
            Debug.Assert(clusterGroup != null);

            _clusterGroup = clusterGroup;
        }
Esempio n. 4
0
        public void TestForCacheNodes()
        {
            ICollection <IClusterNode> nodes = _grid1.GetCluster().GetNodes();

            // Cache nodes.
            IClusterGroup prjCache = _grid1.GetCluster().ForCacheNodes("cache1");

            Assert.AreEqual(2, prjCache.GetNodes().Count);

            Assert.IsTrue(nodes.Contains(prjCache.GetNodes().ElementAt(0)));
            Assert.IsTrue(nodes.Contains(prjCache.GetNodes().ElementAt(1)));

            // Data nodes.
            IClusterGroup prjData = _grid1.GetCluster().ForDataNodes("cache1");

            Assert.AreEqual(2, prjData.GetNodes().Count);

            Assert.IsTrue(prjCache.GetNodes().Contains(prjData.GetNodes().ElementAt(0)));
            Assert.IsTrue(prjCache.GetNodes().Contains(prjData.GetNodes().ElementAt(1)));

            // Client nodes.
            IClusterGroup prjClient = _grid1.GetCluster().ForClientNodes("cache1");

            Assert.AreEqual(0, prjClient.GetNodes().Count);
        }
Esempio n. 5
0
        /// <summary>
        /// Initializes a new instance of the <see cref="Events" /> class.
        /// </summary>
        /// <param name="target">Target.</param>
        /// <param name="marsh">Marshaller.</param>
        /// <param name="clusterGroup">Cluster group.</param>
        public Events(IUnmanagedTarget target, Marshaller marsh, IClusterGroup clusterGroup)
            : base(target, marsh)
        {
            Debug.Assert(clusterGroup != null);

            _clusterGroup = clusterGroup;
        }
Esempio n. 6
0
        /// <summary>
        /// Initializes a new instance of the <see cref="Events" /> class.
        /// </summary>
        /// <param name="target">Target.</param>
        /// <param name="marsh">Marshaller.</param>
        /// <param name="clusterGroup">Cluster group.</param>
        public Events(IUnmanagedTarget target, Marshaller marsh, IClusterGroup clusterGroup)
            : base(target, marsh)
        {
            Debug.Assert(clusterGroup != null);

            _clusterGroup = clusterGroup;

            _asyncInstance = new Lazy <Events>(() => new Events(this));
        }
Esempio n. 7
0
        /// <summary>
        /// Initializes a new instance of the <see cref="Events"/> class.
        /// </summary>
        /// <param name="target">Target.</param>
        /// <param name="marsh">Marshaller.</param>
        /// <param name="clusterGroup">Cluster group.</param>
        public Events(IUnmanagedTarget target, PortableMarshaller marsh, IClusterGroup clusterGroup)
            : base(target, marsh)
        {
            Debug.Assert(clusterGroup != null);

            ClusterGroup = clusterGroup;

            Ignite = (Ignite)clusterGroup.Ignite;
        }
Esempio n. 8
0
        /// <summary>
        /// Initializes a new instance of the <see cref="Messaging" /> class.
        /// </summary>
        /// <param name="target">Target.</param>
        /// <param name="prj">Cluster group.</param>
        public Messaging(IPlatformTargetInternal target, IClusterGroup prj)
            : base(target)
        {
            Debug.Assert(prj != null);

            _clusterGroup = prj;

            _ignite = (Ignite)prj.Ignite;
        }
Esempio n. 9
0
        /// <summary>
        /// Initializes a new instance of the <see cref="Messaging" /> class.
        /// </summary>
        /// <param name="target">Target.</param>
        /// <param name="marsh">Marshaller.</param>
        /// <param name="prj">Cluster group.</param>
        public Messaging(IUnmanagedTarget target, Marshaller marsh, IClusterGroup prj)
            : base(target, marsh)
        {
            Debug.Assert(prj != null);

            _clusterGroup = prj;

            _ignite = (Ignite)prj.Ignite;
        }
Esempio n. 10
0
        /** <inheritdoc /> */
        public IEvents Events(IClusterGroup clusterGroup)
        {
            if (clusterGroup == null)
            {
                throw new ArgumentNullException("clusterGroup");
            }

            return(clusterGroup.Events());
        }
Esempio n. 11
0
        /// <summary>
        /// Initializes a new instance of the <see cref="Services" /> class.
        /// </summary>
        /// <param name="target">Target.</param>
        /// <param name="marsh">Marshaller.</param>
        /// <param name="clusterGroup">Cluster group.</param>
        /// <param name="keepBinary">Invoker binary flag.</param>
        /// <param name="srvKeepBinary">Server binary flag.</param>
        public Services(IUnmanagedTarget target, Marshaller marsh, IClusterGroup clusterGroup,
                        bool keepBinary, bool srvKeepBinary)
            : base(target, marsh)
        {
            Debug.Assert(clusterGroup != null);

            _clusterGroup  = clusterGroup;
            _keepBinary    = keepBinary;
            _srvKeepBinary = srvKeepBinary;
        }
Esempio n. 12
0
        /// <summary>
        /// Initializes a new instance of the <see cref="Services" /> class.
        /// </summary>
        /// <param name="target">Target.</param>
        /// <param name="marsh">Marshaller.</param>
        /// <param name="clusterGroup">Cluster group.</param>
        /// <param name="keepPortable">Invoker portable flag.</param>
        /// <param name="srvKeepPortable">Server portable flag.</param>
        public Services(IUnmanagedTarget target, PortableMarshaller marsh, IClusterGroup clusterGroup,
                        bool keepPortable, bool srvKeepPortable)
            : base(target, marsh)
        {
            Debug.Assert(clusterGroup != null);

            _clusterGroup   = clusterGroup;
            KeepPortable    = keepPortable;
            SrvKeepPortable = srvKeepPortable;
        }
Esempio n. 13
0
        /// <summary>
        /// Initializes a new instance of the <see cref="Services" /> class.
        /// </summary>
        /// <param name="target">Target.</param>
        /// <param name="clusterGroup">Cluster group.</param>
        /// <param name="keepBinary">Invoker binary flag.</param>
        /// <param name="srvKeepBinary">Server binary flag.</param>
        public Services(IPlatformTargetInternal target, IClusterGroup clusterGroup,
                        bool keepBinary, bool srvKeepBinary)
            : base(target)
        {
            Debug.Assert(clusterGroup != null);

            _clusterGroup  = clusterGroup;
            _keepBinary    = keepBinary;
            _srvKeepBinary = srvKeepBinary;
        }
Esempio n. 14
0
        public void TestForRemotes()
        {
            ICollection <IClusterNode> nodes = _grid1.GetCluster().GetNodes();

            IClusterGroup prj = _grid1.GetCluster().ForRemotes();

            Assert.AreEqual(2, prj.GetNodes().Count);
            Assert.IsTrue(nodes.Contains(prj.GetNodes().ElementAt(0)));
            Assert.IsTrue(nodes.Contains(prj.GetNodes().ElementAt(1)));
        }
Esempio n. 15
0
        public void TestForAttribute()
        {
            ICollection <IClusterNode> nodes = _grid1.GetCluster().GetNodes();

            IClusterGroup prj = _grid1.GetCluster().ForAttribute("my_attr", "value1");

            Assert.AreEqual(1, prj.GetNodes().Count);
            Assert.IsTrue(nodes.Contains(prj.GetNode()));
            Assert.AreEqual("value1", prj.GetNodes().First().GetAttribute <string>("my_attr"));
        }
Esempio n. 16
0
        public void TestProjection()
        {
            IClusterGroup prj = _grid1.GetCluster();

            Assert.NotNull(prj);

            Assert.AreEqual(prj, prj.Ignite);

            // Check that default Compute projection excludes client nodes.
            CollectionAssert.AreEquivalent(prj.ForServers().GetNodes(), prj.GetCompute().ClusterGroup.GetNodes());
        }
Esempio n. 17
0
        /// <summary>
        /// Initializes a new instance of the <see cref="Messaging" /> class.
        /// </summary>
        /// <param name="target">Target.</param>
        /// <param name="marsh">Marshaller.</param>
        /// <param name="prj">Cluster group.</param>
        public Messaging(IUnmanagedTarget target, Marshaller marsh, IClusterGroup prj)
            : base(target, marsh)
        {
            Debug.Assert(prj != null);

            _clusterGroup = prj;

            _ignite = (Ignite)prj.Ignite;

            _asyncInstance = new Lazy <Messaging>(() => new Messaging(this));
        }
Esempio n. 18
0
        /// <summary>
        /// Initializes a new instance of the <see cref="Services" /> class.
        /// </summary>
        /// <param name="target">Target.</param>
        /// <param name="marsh">Marshaller.</param>
        /// <param name="clusterGroup">Cluster group.</param>
        /// <param name="keepBinary">Invoker binary flag.</param>
        /// <param name="srvKeepBinary">Server binary flag.</param>
        public Services(IUnmanagedTarget target, Marshaller marsh, IClusterGroup clusterGroup,
                        bool keepBinary, bool srvKeepBinary)
            : base(target, marsh)
        {
            Debug.Assert(clusterGroup != null);

            _clusterGroup  = clusterGroup;
            _keepBinary    = keepBinary;
            _srvKeepBinary = srvKeepBinary;

            _asyncInstance = new Lazy <Services>(() => new Services(this));
        }
Esempio n. 19
0
        /** <inheritDoc /> */
        public ICacheMetrics GetMetrics(IClusterGroup clusterGroup)
        {
            IgniteArgumentCheck.NotNull(clusterGroup, "clusterGroup");

            var prj = clusterGroup as ClusterGroupImpl;

            if (prj == null)
            {
                throw new ArgumentException("Unexpected IClusterGroup implementation: " + clusterGroup.GetType());
            }

            return(prj.GetCacheMetrics(Name));
        }
Esempio n. 20
0
        public void TestForNodes()
        {
            ICollection <IClusterNode> nodes = _grid1.GetCluster().GetNodes();

            IClusterNode first  = nodes.ElementAt(0);
            IClusterNode second = nodes.ElementAt(1);

            IClusterGroup singleNodePrj = _grid1.GetCluster().ForNodeIds(first.Id);

            Assert.AreEqual(1, singleNodePrj.GetNodes().Count);
            Assert.AreEqual(first.Id, singleNodePrj.GetNodes().First().Id);

            singleNodePrj = _grid1.GetCluster().ForNodeIds(new List <Guid> {
                first.Id
            });
            Assert.AreEqual(1, singleNodePrj.GetNodes().Count);
            Assert.AreEqual(first.Id, singleNodePrj.GetNodes().First().Id);

            singleNodePrj = _grid1.GetCluster().ForNodes(first);
            Assert.AreEqual(1, singleNodePrj.GetNodes().Count);
            Assert.AreEqual(first.Id, singleNodePrj.GetNodes().First().Id);

            singleNodePrj = _grid1.GetCluster().ForNodes(new List <IClusterNode> {
                first
            });
            Assert.AreEqual(1, singleNodePrj.GetNodes().Count);
            Assert.AreEqual(first.Id, singleNodePrj.GetNodes().First().Id);

            IClusterGroup multiNodePrj = _grid1.GetCluster().ForNodeIds(first.Id, second.Id);

            Assert.AreEqual(2, multiNodePrj.GetNodes().Count);
            Assert.IsTrue(multiNodePrj.GetNodes().Contains(first));
            Assert.IsTrue(multiNodePrj.GetNodes().Contains(second));

            multiNodePrj = _grid1.GetCluster().ForNodeIds(new[] { first, second }.Select(x => x.Id));
            Assert.AreEqual(2, multiNodePrj.GetNodes().Count);
            Assert.IsTrue(multiNodePrj.GetNodes().Contains(first));
            Assert.IsTrue(multiNodePrj.GetNodes().Contains(second));

            multiNodePrj = _grid1.GetCluster().ForNodes(first, second);
            Assert.AreEqual(2, multiNodePrj.GetNodes().Count);
            Assert.IsTrue(multiNodePrj.GetNodes().Contains(first));
            Assert.IsTrue(multiNodePrj.GetNodes().Contains(second));

            multiNodePrj = _grid1.GetCluster().ForNodes(new List <IClusterNode> {
                first, second
            });
            Assert.AreEqual(2, multiNodePrj.GetNodes().Count);
            Assert.IsTrue(multiNodePrj.GetNodes().Contains(first));
            Assert.IsTrue(multiNodePrj.GetNodes().Contains(second));
        }
Esempio n. 21
0
        public void TestForPredicate()
        {
            IClusterGroup prj1 = _grid1.GetCluster().ForPredicate(new NotAttributePredicate("value1").Apply);

            Assert.AreEqual(2, prj1.GetNodes().Count);

            IClusterGroup prj2 = prj1.ForPredicate(new NotAttributePredicate("value2").Apply);

            Assert.AreEqual(1, prj2.GetNodes().Count);

            string val;

            prj2.GetNodes().First().TryGetAttribute("my_attr", out val);

            Assert.IsTrue(val == null || (!val.Equals("value1") && !val.Equals("value2")));
        }
Esempio n. 22
0
        /// <summary>
        /// Verifies received messages against expected messages.
        /// </summary>
        /// <param name="cluster">Cluster.</param>
        /// <param name="expectedMessages">Expected messages.</param>
        /// <param name="resultFunc">Result transform function.</param>
        /// <param name="expectedRepeat">Expected repeat count.</param>
        public static void VerifyReceive(IClusterGroup cluster, IEnumerable <string> expectedMessages,
                                         Func <IEnumerable <string>, IEnumerable <string> > resultFunc, int expectedRepeat)
        {
            // check if expected message count has been received; Wait returns false if there were none.
            Assert.IsTrue(ReceivedEvent.Wait(MessageTimeout));

            expectedMessages = expectedMessages.SelectMany(x => Enumerable.Repeat(x, expectedRepeat));

            Assert.AreEqual(expectedMessages, resultFunc(ReceivedMessages));

            // check that all messages came from local node.
            var localNodeId = cluster.Ignite.GetCluster().GetLocalNode().Id;

            Assert.AreEqual(localNodeId, LastNodeIds.Distinct().Single());

            AssertFailures();
        }
Esempio n. 23
0
        public void TestForOldestYoungestRandom()
        {
            ICollection <IClusterNode> nodes = _grid1.GetCluster().GetNodes();

            IClusterGroup prj = _grid1.GetCluster().ForYoungest();

            Assert.AreEqual(1, prj.GetNodes().Count);
            Assert.IsTrue(nodes.Contains(prj.GetNode()));

            prj = _grid1.GetCluster().ForOldest();
            Assert.AreEqual(1, prj.GetNodes().Count);
            Assert.IsTrue(nodes.Contains(prj.GetNode()));

            prj = _grid1.GetCluster().ForRandom();
            Assert.AreEqual(1, prj.GetNodes().Count);
            Assert.IsTrue(nodes.Contains(prj.GetNode()));
        }
Esempio n. 24
0
 public ClusterController(ICluster clusterSvc, IClusterGroup clusterGroupSvc)
 {
     _clusterSvc = clusterSvc;
     _clusterGroupSvc = clusterGroupSvc;
 }
Esempio n. 25
0
 /// <summary>
 /// Initializes a new async instance.
 /// </summary>
 /// <param name="events">The events.</param>
 private Events(Events events) : base(UU.EventsWithAsync(events.Target), events.Marshaller)
 {
     _clusterGroup = events.ClusterGroup;
 }
 public ClusterGroupController(IClusterGroup clusterGroupSvc)
 {
     _clusterGroupSvc = clusterGroupSvc;
 }
Esempio n. 27
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ServicesAsync" /> class.
 /// </summary>
 /// <param name="target">Target.</param>
 /// <param name="marsh">Marshaller.</param>
 /// <param name="clusterGroup">Cluster group.</param>
 /// <param name="keepPortable">Portable flag.</param>
 /// <param name="srvKeepPortable">Server portable flag.</param>
 public ServicesAsync(IUnmanagedTarget target, PortableMarshaller marsh, IClusterGroup clusterGroup,
                      bool keepPortable, bool srvKeepPortable)
     : base(target, marsh, clusterGroup, keepPortable, srvKeepPortable)
 {
     // No-op
 }
Esempio n. 28
0
        static void Main(string[] args)
        {
            string   s;
            DateTime startTime;
            DateTime endTime;

            IgniteConfiguration cfg = new IgniteConfiguration()
            {
                IgniteInstanceName = "TRex",

                // Register custom class for Ignite serialization
                BinaryConfiguration = new Apache.Ignite.Core.Binary.BinaryConfiguration(typeof(MyCacheClass))
            };

            IIgnite ignite = Ignition.Start(cfg);

            // Add a cache to Ignite
            ICache <string, MyCacheClass> cache = ignite.CreateCache <string, MyCacheClass>
                                                      (new CacheConfiguration()
            {
                Name                      = "TestCache",
                CopyOnRead                = false,
                KeepBinaryInStore         = false,
                CacheStoreFactory         = new TRexCacheStoreFactory(),
                ReadThrough               = true,
                WriteThrough              = true,
                WriteBehindFlushFrequency = new TimeSpan(0, 0, 5),     // 5 seconds
                EvictionPolicy            = new LruEvictionPolicy()
                {
                    MaxMemorySize = 1000000,
                }
            });

            int NumCacheEntries = 5000;

            // Add a cache item
            cache.Put("First", new MyCacheClass("FirstItem"));

            // Add a collectikon of items
            startTime = DateTime.Now;
            for (int i = 0; i < NumCacheEntries; i++)
            {
                cache.Put("First" + i, new MyCacheClass("First" + i));
            }
            endTime = DateTime.Now;

            s = string.Format("{0}", endTime - startTime);
            Console.WriteLine("Time to add cache items with serialisation: {0}", s);

            int sumsum = 0;

            // Query back the cache items with serialisation
            startTime = DateTime.Now;
            for (int i = 0; i < NumCacheEntries; i++)
            {
                MyCacheClass first = cache.Get("First" + i);

                int sum = 0;
                for (int ii = 0; ii < first.localData.Length; ii++)
                {
                    sum += first.localData[ii];
                }
                sumsum += sum;
            }
            endTime = DateTime.Now;

            s = string.Format("{0}", endTime - startTime);
            Console.WriteLine("Time to query cache items with serialisation: {0}, sum = {1}", s, sumsum);

            var binCache = cache.WithKeepBinary <string, IBinaryObject>();

            //            IBinaryObject binCacheItem = binCache["First"];
            //            Console.WriteLine(binCacheItem.GetField<string>("Name"));

            // Query back the cache items without serialisation (using BinaryObject)
            startTime = DateTime.Now;
            for (int i = 0; i < NumCacheEntries; i++)
            {
                IBinaryObject binCacheItem = binCache["First" + i];

                byte[] bytes = binCacheItem.GetField <byte[]>("localData");

                int sum = 0;
                for (int ii = 0; ii < bytes.Length; ii++)
                {
                    sum += bytes[ii];
                }
                sumsum += sum;
            }
            endTime = DateTime.Now;

            s = string.Format("{0}", endTime - startTime);
            Console.WriteLine("Time to query cache items without serialisation: {0}, sum = {1}", s, sumsum);

            // Get compute instance over all nodes in the cluster.
            ICompute      compute  = ignite.GetCompute();
            IClusterGroup compute2 = ignite.GetCompute().ClusterGroup;



            // Execute a map reduce on the cluster
            if (compute2.ForServers()?.GetNodes()?.Any() == true)
            {
                try
                {
                    string mapReduceResult = ignite.GetCompute().Execute <string, string, string>(new MyComputeTask(), "Bob");
                    Console.WriteLine("Mapreduce result = '{0}'", mapReduceResult);
                }
                catch (Exception e)
                {
                    Console.WriteLine("Exception executing mapReduce execution\r\n: {0}", e);
                }
            }
            else
            {
                Console.WriteLine("Calling cluster mapReduce broadcast function: No servers present in cluster");
            }

            // Execute a command using affinity on the cluster
            try
            {
                string affinityResult = ignite.GetCompute().AffinityCall <string>("TestCache", "First", new AffinityComputeFunc("First"));
                Console.WriteLine("Affinity result = '{0}'", affinityResult);
            }
            catch (Exception e)
            {
                Console.WriteLine("Exception executing affinity execution\r\n: {0}", e);
            }

            if (ignite == null)
            {
                Console.WriteLine("Ignite instance is null at end of method");
            }
            Console.ReadKey();
        }
Esempio n. 29
0
        /** <inheritdoc /> */
        public ICompute Compute(IClusterGroup clusterGroup)
        {
            IgniteArgumentCheck.NotNull(clusterGroup, "clusterGroup");

            return(clusterGroup.Compute());
        }
Esempio n. 30
0
 /** <inheritDoc /> */
 public ICacheMetrics GetMetrics(IClusterGroup clusterGroup)
 {
     return(_cache.GetMetrics(clusterGroup));
 }
 public ICacheMetrics GetMetrics(IClusterGroup clusterGroup)
 {
     throw new NotImplementedException();
 }
Esempio n. 32
0
        /** <inheritdoc /> */
        public IMessaging Message(IClusterGroup clusterGroup)
        {
            IgniteArgumentCheck.NotNull(clusterGroup, "clusterGroup");

            return(clusterGroup.Message());
        }