You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by yz...@apache.org on 2017/10/13 17:43:32 UTC

[47/50] [abbrv] ignite git commit: IGNITE-6050 Fix eternal wait in DataStreamerTest.TestBufferSize

IGNITE-6050 Fix eternal wait in DataStreamerTest.TestBufferSize

This closes #2448

(cherry picked from commit 2cf1260)


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/251a333d
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/251a333d
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/251a333d

Branch: refs/heads/ignite-2.1.5-p1
Commit: 251a333dfbf09d3f6b69bbb2b7658eb3d88fcf0a
Parents: a318c4a
Author: Pavel Tupitsyn <pt...@apache.org>
Authored: Tue Aug 29 14:16:00 2017 +0300
Committer: Dmitriy Govorukhin <dm...@gmail.com>
Committed: Mon Sep 25 13:33:13 2017 +0300

----------------------------------------------------------------------
 .../Dataload/DataStreamerTest.cs                | 71 +++++++++++++-------
 1 file changed, 48 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/251a333d/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Dataload/DataStreamerTest.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Dataload/DataStreamerTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Dataload/DataStreamerTest.cs
index de95003..fe5955f 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Dataload/DataStreamerTest.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Dataload/DataStreamerTest.cs
@@ -38,6 +38,9 @@ namespace Apache.Ignite.Core.Tests.Dataload
         /** Node. */
         private IIgnite _grid;
 
+        /** Node 2. */
+        private IIgnite _grid2;
+
         /** Cache. */
         private ICache<int, int?> _cache;
 
@@ -49,7 +52,7 @@ namespace Apache.Ignite.Core.Tests.Dataload
         {
             _grid = Ignition.Start(TestUtils.GetTestConfiguration());
 
-            Ignition.Start(new IgniteConfiguration(TestUtils.GetTestConfiguration())
+            _grid2 = Ignition.Start(new IgniteConfiguration(TestUtils.GetTestConfiguration())
             {
                 IgniteInstanceName = "grid1"
             });
@@ -228,42 +231,64 @@ namespace Apache.Ignite.Core.Tests.Dataload
         [Test]
         public void TestBufferSize()
         {
-            using (IDataStreamer<int, int> ldr = _grid.GetDataStreamer<int, int>(CacheName))
+            using (var ldr = _grid.GetDataStreamer<int, int>(CacheName))
             {
-                var fut = ldr.AddData(1, 1);
+                const int timeout = 5000;
+
+                var part1 = GetPrimaryPartitionKeys(_grid, 4);
+                var part2 = GetPrimaryPartitionKeys(_grid2, 4);
+
+                var task = ldr.AddData(part1[0], part1[0]);
 
                 Thread.Sleep(100);
 
-                Assert.IsFalse(fut.IsCompleted);
+                Assert.IsFalse(task.IsCompleted);
 
                 ldr.PerNodeBufferSize = 2;
 
-                ldr.AddData(2, 2);
-                ldr.AddData(3, 3);
-                ldr.AddData(4, 4).Wait();
-                fut.Wait();
+                ldr.AddData(part2[0], part2[0]);
+                ldr.AddData(part1[1], part1[1]);
+                Assert.IsTrue(ldr.AddData(part2[1], part2[1]).Wait(timeout));
+                Assert.IsTrue(task.Wait(timeout));
 
-                Assert.AreEqual(1, _cache.Get(1));
-                Assert.AreEqual(2, _cache.Get(2));
-                Assert.AreEqual(3, _cache.Get(3));
-                Assert.AreEqual(4, _cache.Get(4));
+                Assert.AreEqual(part1[0], _cache.Get(part1[0]));
+                Assert.AreEqual(part1[1], _cache.Get(part1[1]));
+                Assert.AreEqual(part2[0], _cache.Get(part2[0]));
+                Assert.AreEqual(part2[1], _cache.Get(part2[1]));
 
-                ldr.AddData(new List<KeyValuePair<int, int>>
+                Assert.IsTrue(ldr.AddData(new[]
                 {
-                    new KeyValuePair<int, int>(5, 5), 
-                    new KeyValuePair<int, int>(6, 6),
-                    new KeyValuePair<int, int>(7, 7), 
-                    new KeyValuePair<int, int>(8, 8)
-                }).Wait();
-
-                Assert.AreEqual(5, _cache.Get(5));
-                Assert.AreEqual(6, _cache.Get(6));
-                Assert.AreEqual(7, _cache.Get(7));
-                Assert.AreEqual(8, _cache.Get(8));
+                    new KeyValuePair<int, int>(part1[2], part1[2]),
+                    new KeyValuePair<int, int>(part1[3], part1[3]),
+                    new KeyValuePair<int, int>(part2[2], part2[2]),
+                    new KeyValuePair<int, int>(part2[3], part2[3])
+                }).Wait(timeout));
+
+                Assert.AreEqual(part1[2], _cache.Get(part1[2]));
+                Assert.AreEqual(part1[3], _cache.Get(part1[3]));
+                Assert.AreEqual(part2[2], _cache.Get(part2[2]));
+                Assert.AreEqual(part2[3], _cache.Get(part2[3]));
             }
         }
 
         /// <summary>
+        /// Gets the primary partition keys.
+        /// </summary>
+        private static int[] GetPrimaryPartitionKeys(IIgnite ignite, int count)
+        {
+            var affinity = ignite.GetAffinity(CacheName);
+            
+            var localNode = ignite.GetCluster().GetLocalNode();
+
+            var part = affinity.GetPrimaryPartitions(localNode).First();
+
+            return Enumerable.Range(0, int.MaxValue)
+                .Where(k => affinity.GetPartition(k) == part)
+                .Take(count)
+                .ToArray();
+        }
+
+        /// <summary>
         /// Test close.
         /// </summary>
         [Test]