Exemple #1
0
        public void HiLo_Async_MultiDb()
        {
            using (var store = GetDocumentStore())
            {
                using (var session = store.OpenSession())
                {
                    session.Store(new HiloDoc
                    {
                        Max = 64
                    }, "Raven/Hilo/users");

                    session.Store(new HiloDoc
                    {
                        Max = 128
                    }, "Raven/Hilo/products");

                    session.SaveChanges();


                    var multiDbHiLo = new AsyncMultiDatabaseHiLoIdGenerator(store, store.Conventions);

                    var generateDocumentKey = multiDbHiLo.GenerateDocumentIdAsync(null, new User()).GetAwaiter().GetResult();
                    Assert.Equal("users/65-A", generateDocumentKey);

                    generateDocumentKey = multiDbHiLo.GenerateDocumentIdAsync(null, new Product()).GetAwaiter().GetResult();
                    Assert.Equal("products/129-A", generateDocumentKey);
                }
            }
        }
Exemple #2
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);
            }
        }