public async Task IterateBatchTest() { var inMemoryStorePartition = new InMemoryDbStore(); for (int i = 0; i < 100; i++) { await inMemoryStorePartition.Put($"key{i}".ToBytes(), $"val{i}".ToBytes()); } int[] counter = { 11 }; await inMemoryStorePartition.IterateBatch( $"key{counter[0]}".ToBytes(), 20, (key, value) => { Assert.Equal($"key{counter[0]}", key.FromBytes <string>()); Assert.Equal($"val{counter[0]}", value.FromBytes <string>()); counter[0]++; return(Task.CompletedTask); }); counter[0] = 61; await inMemoryStorePartition.IterateBatch( $"key{counter[0]}".ToBytes(), 20, (key, value) => { Assert.Equal($"key{counter[0]}", key.FromBytes <string>()); Assert.Equal($"val{counter[0]}", value.FromBytes <string>()); counter[0]++; return(Task.CompletedTask); }); }
public async Task UpdateDuringIterateTest() { int totalCount = 100; var inMemoryStorePartition = new InMemoryDbStore(); for (int i = 0; i <= totalCount; i++) { await inMemoryStorePartition.Put($"key{i}".ToBytes(), $"val{i}".ToBytes()); } Task iterateBatch = Task.Run( async() => { await inMemoryStorePartition.IterateBatch( 10, async(key, value) => { await Task.Delay(TimeSpan.FromMilliseconds(500)); }); }); Task updateTask = Task.Run( async() => { await inMemoryStorePartition.Remove("key0".ToBytes()); await Task.Delay(TimeSpan.FromMilliseconds(500)); await inMemoryStorePartition.Put("key20".ToBytes(), "newValue".ToBytes()); await Task.Delay(TimeSpan.FromMilliseconds(500)); await inMemoryStorePartition.Remove("key8".ToBytes()); }); await Task.WhenAll(updateTask, iterateBatch); Assert.True(iterateBatch.IsCompletedSuccessfully); Assert.True(updateTask.IsCompletedSuccessfully); }
public async Task IterateEmptyBatchTest() { var inMemoryStorePartition = new InMemoryDbStore(); bool callbackCalled = false; await inMemoryStorePartition.IterateBatch(20, (key, value) => { callbackCalled = true; return(Task.CompletedTask); }); Assert.False(callbackCalled); }