Exemple #1
0
        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);
            });
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }