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