Exemple #1
0
        public void Generate_HiLo_Ids()
        {
            using (var store = GetDocumentStore())
            {
                var multiDbHiLo = new AsyncMultiDatabaseHiLoIdGenerator(store);

                var usersIds    = new ConcurrentSet <long>();
                var productsIds = new ConcurrentSet <long>();
                var count       = 10;

                Parallel.For(0, count, _ =>
                {
                    var id = multiDbHiLo.GenerateNextIdForAsync(null, "Users").GetAwaiter().GetResult();
                    Assert.True(usersIds.TryAdd(id));

                    id = multiDbHiLo.GenerateNextIdForAsync(null, "Products").GetAwaiter().GetResult();
                    Assert.True(productsIds.TryAdd(id));
                });

                Assert.Equal(count, usersIds.Count);
                Assert.Equal(count, productsIds.Count);

                Parallel.For(0, count, _ =>
                {
                    var id = store.HiLoIdGenerator.GenerateNextIdForAsync(null, "Users").GetAwaiter().GetResult();
                    Assert.True(usersIds.TryAdd(id));

                    id = store.HiLoIdGenerator.GenerateNextIdForAsync(null, "Products").GetAwaiter().GetResult();
                    Assert.True(productsIds.TryAdd(id));

                    id = store.HiLoIdGenerator.GenerateNextIdForAsync(null, typeof(User)).GetAwaiter().GetResult();
                    Assert.True(usersIds.TryAdd(id));

                    id = store.HiLoIdGenerator.GenerateNextIdForAsync(null, new Product()).GetAwaiter().GetResult();
                    Assert.True(productsIds.TryAdd(id));

                    id = store.HiLoIdGenerator.GenerateNextIdForAsync(null, new User()).GetAwaiter().GetResult();
                    Assert.True(usersIds.TryAdd(id));

                    id = store.HiLoIdGenerator.GenerateNextIdForAsync(null, typeof(Product)).GetAwaiter().GetResult();
                    Assert.True(productsIds.TryAdd(id));
                });

                Assert.Equal(count * 4, usersIds.Count);
                Assert.Equal(count * 4, productsIds.Count);
            }
        }