コード例 #1
0
        public void TestSkipStoreDoesNotInvokeCacheStore([Values(true, false)] bool allowOverwrite)
        {
            var serverCache = Ignition.GetIgnite().CreateCache <int, int>(new CacheConfiguration
            {
                Name = TestUtils.TestName,
                CacheStoreFactory = new BlockingCacheStore(),
                WriteThrough      = true
            });

            var options = new DataStreamerClientOptions
            {
                SkipStore      = true,
                AllowOverwrite = allowOverwrite
            };

            BlockingCacheStore.Block();

            using (var streamer = Client.GetDataStreamer <int, int>(serverCache.Name, options))
            {
                foreach (var x in Enumerable.Range(1, 300))
                {
                    streamer.Add(x, -x);
                }
            }

            Assert.AreEqual(300, serverCache.GetSize());
            Assert.AreEqual(-100, serverCache[100]);
        }
コード例 #2
0
        public void TestExceedingPerNodeParallelOperationsBlocksAddMethod()
        {
            var serverCache = Ignition.GetIgnite().CreateCache <int, int>(new CacheConfiguration
            {
                Name = TestUtils.TestName,
                CacheStoreFactory = new BlockingCacheStore(),
                WriteThrough      = true
            });

            var options = new DataStreamerClientOptions
            {
                PerNodeParallelOperations = 2,
                PerNodeBufferSize         = 1,
                AllowOverwrite            = true // Required for cache store to be invoked.
            };

            // Get primary keys for one of the nodes.
            var keys = TestUtils.GetPrimaryKeys(Ignition.GetIgnite(), serverCache.Name).Take(5).ToArray();

            using (var streamer = Client.GetDataStreamer <int, int>(serverCache.Name, options))
            {
                // Block writes and add data.
                BlockingCacheStore.Block();
                streamer.Add(keys[1], 1);
                streamer.Add(keys[2], 2);

                // ReSharper disable once AccessToDisposedClosure
                var task = Task.Factory.StartNew(() => streamer.Add(keys[3], 3));

                // Task is blocked because two streamer operations are already in progress.
                Assert.IsFalse(TestUtils.WaitForCondition(() => task.IsCompleted, 500));
                BlockingCacheStore.Unblock();
                TestUtils.WaitForTrueCondition(() => task.IsCompleted, 500);
            }

            Assert.AreEqual(3, serverCache.GetSize());
        }