public void TestAutoFlush() { using (IDataStreamer <int, int> ldr = _grid.GetDataStreamer <int, int>(CacheName)) { // Test auto flush turning on. var fut = ldr.GetCurrentBatchTask(); ldr.Add(1, 1); Thread.Sleep(100); Assert.IsFalse(fut.IsCompleted); ldr.AutoFlushInterval = TimeSpan.FromSeconds(1); fut.Wait(); // Test forced flush after frequency change. fut = ldr.GetCurrentBatchTask(); ldr.Add(2, 2); ldr.AutoFlushInterval = TimeSpan.MaxValue; fut.Wait(); // Test another forced flush after frequency change. fut = ldr.GetCurrentBatchTask(); ldr.Add(3, 3); ldr.AutoFlushInterval = TimeSpan.FromSeconds(1); fut.Wait(); // Test flush before stop. fut = ldr.GetCurrentBatchTask(); ldr.Add(4, 4); ldr.AutoFlushInterval = TimeSpan.Zero; fut.Wait(); // Test flush after second turn on. fut = ldr.GetCurrentBatchTask(); ldr.Add(5, 5); ldr.AutoFlushInterval = TimeSpan.FromSeconds(1); fut.Wait(); 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(5, _cache.Get(5)); } }
public void TestCancel() { using (IDataStreamer <int, int> ldr = _grid.GetDataStreamer <int, int>(CacheName)) { var fut = ldr.GetCurrentBatchTask(); ldr.Add(1, 1); ldr.Close(true); Assert.IsTrue(fut.Wait(5000)); Assert.IsFalse(_cache.ContainsKey(1)); } }
public void TestClose() { using (IDataStreamer <int, int> ldr = _grid.GetDataStreamer <int, int>(CacheName)) { var fut = ldr.GetCurrentBatchTask(); ldr.Add(1, 1); ldr.Close(false); Assert.IsTrue(fut.Wait(5000)); Assert.AreEqual(1, _cache.Get(1)); } }
public void TestMultithreaded() { int entriesPerThread = 100000; int threadCnt = 8; for (int i = 0; i < 5; i++) { _cache.Clear(); Assert.AreEqual(0, _cache.GetSize()); Stopwatch watch = new Stopwatch(); watch.Start(); using (IDataStreamer <int, int> ldr = _grid.GetDataStreamer <int, int>(CacheName)) { ldr.PerNodeBufferSize = 1024; int ctr = 0; TestUtils.RunMultiThreaded(() => { int threadIdx = Interlocked.Increment(ref ctr); int startIdx = (threadIdx - 1) * entriesPerThread; int endIdx = startIdx + entriesPerThread; for (int j = startIdx; j < endIdx; j++) { // ReSharper disable once AccessToDisposedClosure ldr.Add(j, j); if (j % 100000 == 0) { Console.WriteLine("Put [thread=" + threadIdx + ", cnt=" + j + ']'); } } }, threadCnt); } Console.WriteLine("Iteration " + i + ": " + watch.ElapsedMilliseconds); watch.Reset(); for (int j = 0; j < threadCnt * entriesPerThread; j++) { Assert.AreEqual(j, j); } } }