public async Task It_should_return_a_new_one_when_none_was_configured()
        {
            DocumentStore documentStore = null;

            try
            {
                documentStore = ConfigureEndpointRavenDBPersistence.GetDocumentStore();

                RavenSessionTestContext context =
                    await Scenario.Define <RavenSessionTestContext>(testContext => { })
                    .WithEndpoint <SharedRavenSessionExtensions>(b => b.When((bus, c) =>
                {
                    var sendOptions = new SendOptions();

                    sendOptions.RouteToThisEndpoint();

                    return(bus.Send(new SharedRavenSessionExtensions.GenericMessage(), sendOptions));
                }))
                    .Done(c => c.HandlerWasHit)
                    .Run();

                Assert.IsNotNull(context.RavenSessionFromHandler);
            }
            finally
            {
                if (documentStore != null)
                {
                    await ConfigureEndpointRavenDBPersistence.DeleteDatabase(documentStore.Database);
                }
            }
        }
Ejemplo n.º 2
0
    public static PersistenceExtensions <RavenDBPersistence> ResetDocumentStoreSettings(this PersistenceExtensions <RavenDBPersistence> cfg, out TestDatabaseInfo dbInfo)
    {
        var settings = cfg.GetSettings();
        var docStore = ConfigureEndpointRavenDBPersistence.GetDefaultDocumentStore(settings);

        settings.Set("RavenDbDocumentStore", null);
        dbInfo = new TestDatabaseInfo
        {
            Urls     = docStore.Urls,
            Database = docStore.Database
        };
        return(cfg);
    }
        public Task Configure(string endpointName, EndpointConfiguration configuration, RunSettings settings)
        {
            var documentStore = ConfigureEndpointRavenDBPersistence.GetDocumentStore();

            databaseName = documentStore.Database;


            configuration.UsePersistence <RavenDBPersistence, StorageType.GatewayDeduplication>()
            .DoNotSetupDatabasePermissions()
            .SetDefaultDocumentStore(documentStore);

            return(Task.FromResult(0));
        }
        public Task Configure(string endpointName, EndpointConfiguration configuration, RunSettings settings)
        {
            var documentStore = ConfigureEndpointRavenDBPersistence.GetDocumentStore();

            databaseName = documentStore.Database;


#pragma warning disable 618
            configuration.UsePersistence <RavenDBPersistence, StorageType.GatewayDeduplication>()
#pragma warning restore 618
            .SetDefaultDocumentStore(documentStore);

            return(Task.FromResult(0));
        }
        public async Task It_should_return_configured_session()
        {
            DocumentStore documentStore   = null;
            var           createdSessions = new List <IAsyncDocumentSession>();

            try
            {
                documentStore = ConfigureEndpointRavenDBPersistence.GetDocumentStore();

                RavenSessionTestContext context =
                    await Scenario.Define <RavenSessionTestContext>()
                    .WithEndpoint <SharedRavenSessionExtensions>(b =>
                                                                 b.CustomConfig(config =>
                {
                    config.UsePersistence <RavenDBPersistence>().UseSharedAsyncSession(_ =>
                    {
                        var session = documentStore.OpenAsyncSession();
                        createdSessions.Add(session);
                        return(session);
                    });
                })
                                                                 .When((bus, c) =>
                {
                    var sendOptions = new SendOptions();

                    sendOptions.RouteToThisEndpoint();

                    return(bus.Send(new SharedRavenSessionExtensions.GenericMessage(), sendOptions));
                }))
                    .Done(c => c.HandlerWasHit)
                    .Run();

                var injectedSessionId = ((InMemoryDocumentSessionOperations)context.RavenSessionFromHandler).Id;
                var found             = createdSessions.Cast <InMemoryDocumentSessionOperations>().Any(session => session.Id == injectedSessionId);
                Assert.IsTrue(found);
            }
            finally
            {
                foreach (var session in createdSessions)
                {
                    session.Dispose();
                }

                if (documentStore != null)
                {
                    await ConfigureEndpointRavenDBPersistence.DeleteDatabase(documentStore.Database);
                }
            }
        }
Ejemplo n.º 6
0
        public async Task It_should_return_configured_session()
        {
            DocumentStore         documentStore = null;
            IAsyncDocumentSession session       = null;

            try
            {
                documentStore = ConfigureEndpointRavenDBPersistence.GetDocumentStore();
                session       = documentStore.OpenAsyncSession();

                RavenSessionTestContext context =
                    await Scenario.Define <RavenSessionTestContext>()
                    .WithEndpoint <SharedRavenSessionExtensions>(b =>
                                                                 b.CustomConfig(config =>
                {
                    config.UsePersistence <RavenDBPersistence>().UseSharedAsyncSession(_ => session);
                })
                                                                 .When((bus, c) =>
                {
                    var sendOptions = new SendOptions();

                    sendOptions.RouteToThisEndpoint();

                    return(bus.Send(new SharedRavenSessionExtensions.GenericMessage(), sendOptions));
                }))
                    .Done(c => c.HandlerWasHit)
                    .Run();

                Assert.AreSame(session, context.RavenSessionFromHandler);
            }
            finally
            {
                if (session != null)
                {
                    session.Dispose();
                    session = null;
                }

                if (documentStore != null)
                {
                    await ConfigureEndpointRavenDBPersistence.DeleteDatabase(documentStore.Database);
                }
            }
        }
 public Task Cleanup()
 {
     return(ConfigureEndpointRavenDBPersistence.DeleteDatabase(databaseName));
 }
Ejemplo n.º 8
0
        async Task RunTest(Action <ContextDbConfig> configureMultiTenant)
        {
            var context = await Scenario.Define <Context>(c =>
            {
                c.Db1 = "Tenant1-" + Guid.NewGuid().ToString("n").Substring(16);
                c.Db2 = "Tenant2-" + Guid.NewGuid().ToString("n").Substring(16);
            })
                          .WithEndpoint <MultiTenantEndpoint>(b =>
            {
                b.CustomConfig((cfg, c) =>
                {
                    cfg.EnableOutbox();
                    cfg.LimitMessageProcessingConcurrencyTo(1);
                    cfg.Pipeline.Register(new MessageCountingBehavior(c), "Counts all messages processed");

                    var settings = cfg.GetSettings();

                    var defaultStore        = ConfigureEndpointRavenDBPersistence.GetDefaultDocumentStore(settings);
                    c.DefaultDb             = defaultStore.Database;
                    c.DbConfig.DefaultStore = defaultStore;

                    ConfigureEndpointRavenDBPersistence.CreateDatabase(defaultStore, c.Db1);
                    ConfigureEndpointRavenDBPersistence.CreateDatabase(defaultStore, c.Db2);

                    c.DbConfig.PersistenceExtensions = ConfigureEndpointRavenDBPersistence.GetDefaultPersistenceExtensions(settings);
                    configureMultiTenant(c.DbConfig);
                });

                async Task SendMessage(IMessageSession session, string messageId, string orderId, string dbName)
                {
                    var msg = new TestMsg
                    {
                        OrderId = orderId
                    };
                    var opts = new SendOptions();
                    opts.RouteToThisEndpoint();
                    opts.SetHeader("RavenDatabaseName", dbName);
                    opts.SetMessageId(messageId);
                    await session.Send(msg, opts);
                }

                b.When(async(session, ctx) =>
                {
                    var msgId1 = Guid.NewGuid().ToString();
                    var msgId2 = Guid.NewGuid().ToString();

                    await SendMessage(session, msgId1, "OrderA", ctx.Db1);
                    await SendMessage(session, msgId1, "OrderA", ctx.Db1);
                    await SendMessage(session, msgId2, "OrderB", ctx.Db2);
                    await SendMessage(session, msgId2, "OrderB", ctx.Db2);
                });
            })
                          .Done(c => c.MessagesObserved >= 4)
                          .Run();

            await ConfigureEndpointRavenDBPersistence.DeleteDatabase(context.Db1);

            await ConfigureEndpointRavenDBPersistence.DeleteDatabase(context.Db2);

            Assert.AreEqual(4, context.MessagesObserved);
            Assert.AreEqual(2, context.ObservedDbs.Count);
            Assert.IsFalse(context.ObservedDbs.Any(db => db == context.DefaultDb));
            Assert.Contains(context.Db1, context.ObservedDbs);
            Assert.Contains(context.Db2, context.ObservedDbs);
        }