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]); }
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()); }