public override IRootResolver CreateRootResolver(EventFlowOptions eventFlowOptions)
        {
            var resolver = eventFlowOptions
                .UseInMemoryReadStoreFor<InMemoryTestAggregateReadModel>()
                .CreateResolver();

            _readModelPopulator = resolver.Resolve<IReadModelPopulator>();
            _queryProcessor = resolver.Resolve<IQueryProcessor>();

            return resolver;
        }
示例#2
0
        public override IRootResolver CreateRootResolver(EventFlowOptions eventFlowOptions)
        {
            var connectionSettings = ConnectionSettings.Create()
                                     .EnableVerboseLogging()
                                     .KeepReconnecting()
                                     .SetDefaultUserCredentials(new UserCredentials("admin", "changeit"))
                                     .Build();

            var resolver = eventFlowOptions
                           .UseInMemoryReadStoreFor <InMemoryTestAggregateReadModel>()
                           .AddMetadataProvider <AddGuidMetadataProvider>()
                           .UseEventStoreEventStore(new IPEndPoint(IPAddress.Loopback, 1113), connectionSettings)
                           .CreateResolver();

            _queryProcessor     = resolver.Resolve <IQueryProcessor>();
            _readModelPopulator = resolver.Resolve <IReadModelPopulator>();

            return(resolver);
        }
        public override IRootResolver CreateRootResolver(EventFlowOptions eventFlowOptions)
        {
            var connectionSettings = ConnectionSettings.Create()
                .EnableVerboseLogging()
                .KeepReconnecting()
                .SetDefaultUserCredentials(new UserCredentials("admin", "changeit"))
                .Build();

            var resolver = eventFlowOptions
                .UseInMemoryReadStoreFor<InMemoryTestAggregateReadModel>()
                .AddMetadataProvider<AddGuidMetadataProvider>()
                .UseEventStoreEventStore(new IPEndPoint(IPAddress.Loopback, 1113), connectionSettings)
                .CreateResolver();

            _queryProcessor = resolver.Resolve<IQueryProcessor>();
            _readModelPopulator = resolver.Resolve<IReadModelPopulator>();

            return resolver;
        }
            public override IRootResolver CreateRootResolver(EventFlowOptions eventFlowOptions)
            {
                var storePath = Path.Combine(
                    Path.GetTempPath(),
                    Guid.NewGuid().ToString());

                Directory.CreateDirectory(storePath);

                var resolver = eventFlowOptions
                               .UseInMemoryReadStoreFor <InMemoryTestAggregateReadModel>()
                               .UseFilesEventStore(FilesEventStoreConfiguration.Create(storePath))
                               .CreateResolver();

                _configuration      = resolver.Resolve <IFilesEventStoreConfiguration>();
                _readModelPopulator = resolver.Resolve <IReadModelPopulator>();
                _queryProcessor     = resolver.Resolve <IQueryProcessor>();

                return(resolver);
            }
示例#5
0
        public static EventFlowOptions UseMssqlReadModel <TReadModel, TReadModelLocator>(
            this EventFlowOptions eventFlowOptions)
            where TReadModel : class, IMssqlReadModel, new()
            where TReadModelLocator : IReadModelLocator
        {
            eventFlowOptions
            .RegisterServices(f =>
            {
                if (!f.HasRegistrationFor <IReadModelSqlGenerator>())
                {
                    f.Register <IReadModelSqlGenerator, ReadModelSqlGenerator>(Lifetime.Singleton);
                }
                f.Register <IMssqlReadModelStore <TReadModel>, MssqlReadModelStore <TReadModel> >();
                f.Register <IReadModelStore <TReadModel> >(r => r.Resolver.Resolve <IMssqlReadModelStore <TReadModel> >());
            })
            .UseReadStoreFor <IMssqlReadModelStore <TReadModel>, TReadModel, TReadModelLocator>();

            return(eventFlowOptions);
        }
示例#6
0
        public async Task ResolverAggregatesFactoryCanResolve()
        {
            using (var serviceProvider = EventFlowOptions.New()
                                         .RegisterServices(sr => sr.AddTransient(typeof(Service)))
                                         .ServiceCollection.BuildServiceProvider())
            {
                // Arrange
                var aggregateFactory = serviceProvider.GetRequiredService <IAggregateFactory>();

                // Act
                var serviceDependentAggregate = await aggregateFactory.CreateNewAggregateAsync <ServiceDependentAggregate, ThingyId>(ThingyId.New).ConfigureAwait(false);

                // Assert
                serviceDependentAggregate.Service.Should()
                .NotBeNull()
                .And
                .BeOfType <Service>();
            }
        }
        public override IRootResolver CreateRootResolver(EventFlowOptions eventFlowOptions)
        {
            TestDatabase = MsSqlHelper.CreateDatabase("eventflow");

            var resolver = eventFlowOptions
                .ConfigureMsSql(MsSqlConfiguration.New.SetConnectionString(TestDatabase.ConnectionString))
                .UseEventStore<MsSqlEventStore>()
                .UseMssqlReadModel<MsSqlTestAggregateReadModel>()
                .CreateResolver();

            MsSqlConnection = resolver.Resolve<IMsSqlConnection>();
            ReadModelSqlGenerator = resolver.Resolve<IReadModelSqlGenerator>();
            ReadModelPopulator = resolver.Resolve<IReadModelPopulator>();

            var databaseMigrator = resolver.Resolve<IMsSqlDatabaseMigrator>();
            EventFlowEventStoresMsSql.MigrateDatabase(databaseMigrator);
            databaseMigrator.MigrateDatabaseUsingEmbeddedScripts(GetType().Assembly);

            return resolver;
        }
示例#8
0
        public void SetUpIntegrationTest()
        {
            var eventFlowOptions = Options(EventFlowOptions.New())
                                   .RegisterServices(c => c.AddTransient <IScopedContext, ScopedContext>())
                                   .AddQueryHandler <DbContextQueryHandler, DbContextQuery, string>()
                                   .AddDefaults(EventFlowTestHelpers.Assembly,
                                                type => type != typeof(DbContextQueryHandler));

            ServiceProvider = Configure(eventFlowOptions);

            AggregateStore            = ServiceProvider.GetRequiredService <IAggregateStore>();
            EventStore                = ServiceProvider.GetRequiredService <IEventStore>();
            SnapshotStore             = ServiceProvider.GetRequiredService <ISnapshotStore>();
            SnapshotPersistence       = ServiceProvider.GetRequiredService <ISnapshotPersistence>();
            SnapshotDefinitionService = ServiceProvider.GetRequiredService <ISnapshotDefinitionService>();
            EventPersistence          = ServiceProvider.GetRequiredService <IEventPersistence>();
            CommandBus                = ServiceProvider.GetRequiredService <ICommandBus>();
            QueryProcessor            = ServiceProvider.GetRequiredService <IQueryProcessor>();
            ReadModelPopulator        = ServiceProvider.GetRequiredService <IReadModelPopulator>();
            SagaStore = ServiceProvider.GetRequiredService <ISagaStore>();
        }
示例#9
0
        public override IRootResolver CreateRootResolver(EventFlowOptions eventFlowOptions)
        {
            TestDatabase = MsSqlHelper.CreateDatabase("eventflow");

            var resolver = eventFlowOptions
                           .ConfigureMsSql(MsSqlConfiguration.New.SetConnectionString(TestDatabase.ConnectionString))
                           .UseEventStore <MsSqlEventStore>()
                           .UseMssqlReadModel <MsSqlTestAggregateReadModel>()
                           .CreateResolver();

            MsSqlConnection       = resolver.Resolve <IMsSqlConnection>();
            ReadModelSqlGenerator = resolver.Resolve <IReadModelSqlGenerator>();
            ReadModelPopulator    = resolver.Resolve <IReadModelPopulator>();

            var databaseMigrator = resolver.Resolve <IMsSqlDatabaseMigrator>();

            EventFlowEventStoresMsSql.MigrateDatabase(databaseMigrator);
            databaseMigrator.MigrateDatabaseUsingEmbeddedScripts(GetType().Assembly);

            return(resolver);
        }
示例#10
0
        public static EventFlowOptions AddEventUpgraders(
            this EventFlowOptions eventFlowOptions,
            IEnumerable <Type> eventUpgraderTypes)
        {
            foreach (var eventUpgraderType in eventUpgraderTypes)
            {
                var t = eventUpgraderType;
                var eventUpgraderForAggregateType = t
                                                    .GetInterfaces()
                                                    .SingleOrDefault(i => i.IsGenericType && i.GetGenericTypeDefinition() == typeof(IEventUpgrader <,>));
                if (eventUpgraderForAggregateType == null)
                {
                    throw new ArgumentException(string.Format(
                                                    "Type '{0}' does not have the IEventUpgrader<TAggregate, TIdentity> interface",
                                                    eventUpgraderType.Name));
                }

                eventFlowOptions.RegisterServices(sr => sr.Register(eventUpgraderForAggregateType, t));
            }

            return(eventFlowOptions);
        }
示例#11
0
        public void SetUp()
        {
            _serviceProvider = EventFlowOptions.New()
                               .AddSagas(typeof(AlternativeSagaStoreTestClasses.TestSaga))
                               .AddCommandHandlers(
                typeof(AlternativeSagaStoreTestClasses.SagaTestACommandHandler),
                typeof(AlternativeSagaStoreTestClasses.SagaTestBCommandHandler),
                typeof(AlternativeSagaStoreTestClasses.SagaTestCCommandHandler))
                               .AddEvents(
                typeof(AlternativeSagaStoreTestClasses.SagaTestEventA),
                typeof(AlternativeSagaStoreTestClasses.SagaTestEventB),
                typeof(AlternativeSagaStoreTestClasses.SagaTestEventC))
                               .RegisterServices(sr =>
            {
                sr.AddTransient(typeof(AlternativeSagaStoreTestClasses.TestSagaLocator));
                sr.AddSingleton <ISagaStore, AlternativeSagaStoreTestClasses.InMemorySagaStore>();
            })
                               .ServiceCollection.BuildServiceProvider();

            _commandBus     = _serviceProvider.GetRequiredService <ICommandBus>();
            _aggregateStore = _serviceProvider.GetRequiredService <IAggregateStore>();
            _sagaStore      = (AlternativeSagaStoreTestClasses.InMemorySagaStore)_serviceProvider.GetRequiredService <ISagaStore>();
        }
示例#12
0
 public abstract IRootResolver CreateRootResolver(EventFlowOptions eventFlowOptions);
示例#13
0
 public static EventFlowOptions UseMssqlEventStore(this EventFlowOptions eventFlowOptions)
 {
     eventFlowOptions.UseEventStore <MsSqlEventStore>();
     return(eventFlowOptions);
 }
 public static EventFlowOptions AddOwinMetadataProviders(this EventFlowOptions eventFlowOptions)
 {
     return(eventFlowOptions
            .AddMetadataProviders(EventFlowOwin.Assembly));
 }
示例#15
0
 public static IEnumerable <IEventFlowOptions> TestCases()
 {
     yield return(EventFlowOptions.New());
 }
示例#16
0
 public static EventFlowOptions UseMssqlEventStore(this EventFlowOptions eventFlowOptions)
 {
     eventFlowOptions.AddRegistration(new Registration <IEventStore, MsSqlEventStore>());
     return(eventFlowOptions);
 }
 public abstract IRootResolver CreateRootResolver(EventFlowOptions eventFlowOptions);
 public static EventFlowOptions UseEventStoreEventStore(
     this EventFlowOptions eventFlowOptions)
 {
     return(eventFlowOptions.UseEventStore <EventStoreEventStore>());
 }