Ejemplo n.º 1
0
        public void TestInitialize()
        {
            var eventstorage     = new SpecDomainEventStorage(Given().ToList());
            var snapshotstorage  = new SpecSnapShotStorage(Snapshot);
            var eventpublisher   = new SpecDomainEventPublisher();
            var snapshotStrategy = new DefaultSnapshotStrategy();

            DomainRepository = new SnapshotRepository(snapshotstorage, snapshotStrategy,
                                                      new DomainRepository(eventstorage, eventpublisher), eventstorage);
            Session = new Session(DomainRepository);

            var handler = BuildHandler();

            try
            {
                var @when = When();
                if (@when != null)
                {
                    handler.Handle(@when);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                Exception = e;
            }

            Snapshot = snapshotstorage.Snapshot;

            PublishedEvents  = eventpublisher.PublishedEvents;
            EventDescriptors = eventstorage.Events;
        }
        public static void Run()
        {
            var eventTypeProvider = new DefaultEventTypeProvider <EventCountAggregate>(() => new[] { typeof(EventCountOne), typeof(EventCountTwo) });;

            var fileSystemSnapshotProvider = new FileSystemSnapshotProvider <EventCountAggregate>();

            var defaultSnapshotStrategy = new DefaultSnapshotStrategy(5);

            var eventCountActorWithSnapshot = EventStoreStatefulActorBuilder <EventCountStatefulActor, EventCountAggregate, DemoSystemRegistry>
                                              .Create(StaticData.EventStoreUrl, Do.GetConnectionSettings(), ActorConfiguration.Default)
                                              .WithReadOneStreamFromStartCache(StaticData.EntityOne,
                                                                               eventTypeProvider: eventTypeProvider,
                                                                               getMultipleStreamsCatchupCacheConfiguration: builder =>
            {
                builder.KeepAppliedEventsOnAggregate = true;
            },
                                                                               snapshotStore: fileSystemSnapshotProvider,
                                                                               snapshotStrategy: defaultSnapshotStrategy)
                                              .Build();

            var eventCountActor = EventStoreStatefulActorBuilder <EventCountStatefulActor, EventCountAggregate, DemoSystemRegistry>
                                  .Create(StaticData.EventStoreUrl, Do.GetConnectionSettings(), ActorConfiguration.Default)
                                  .WithReadOneStreamFromStartCache(StaticData.EntityOne,
                                                                   eventTypeProvider: eventTypeProvider,
                                                                   getMultipleStreamsCatchupCacheConfiguration: builder =>
            {
                builder.KeepAppliedEventsOnAggregate = true;
            })
                                  .Build();

            Do.Run(eventCountActor, eventCountActorWithSnapshot);
        }
Ejemplo n.º 3
0
        public Specification()
        {
            var eventpublisher  = new SpecEventPublisher();
            var eventstorage    = new SpecEventStorage(eventpublisher, Given().ToList());
            var snapshotstorage = new SpecSnapShotStorage(Snapshot);

            var snapshotStrategy = new DefaultSnapshotStrategy();
            var repository       = new SnapshotRepository(snapshotstorage, snapshotStrategy, new Repository(eventstorage), eventstorage);

            Session = new Session(repository);

            try
            {
                Aggregate = Session.Get <TAggregate>(Guid.Empty);
            }
            catch (AggregateNotFoundException)
            {
            }

            var handler = BuildHandler();

            handler.Handle(When());

            Snapshot         = snapshotstorage.Snapshot;
            PublishedEvents  = eventpublisher.PublishedEvents;
            EventDescriptors = eventstorage.Events;
        }
Ejemplo n.º 4
0
        public Specification()
        {
            var eventpublisher  = new SpecEventPublisher();
            var eventstorage    = new SpecEventStorage(eventpublisher, Given().ToList());
            var snapshotstorage = new SpecSnapShotStorage(Snapshot);

            var snapshotStrategy = new DefaultSnapshotStrategy();
            var repository       = new SnapshotRepository(snapshotstorage, snapshotStrategy, new Repository(eventstorage), eventstorage);

            Session   = new Session(repository);
            Aggregate = GetAggregate().Result;

            dynamic handler = BuildHandler();

            if (handler is ICancellableCommandHandler <TCommand> )
            {
                handler.Handle(When(), new CancellationToken());
            }
            else if (handler is ICommandHandler <TCommand> )
            {
                handler.Handle(When());
            }
            else
            {
                throw new InvalidCastException($"{nameof(handler)} is not a command handler of type {typeof(TCommand)}");
            }

            Snapshot         = snapshotstorage.Snapshot;
            PublishedEvents  = eventpublisher.PublishedEvents;
            EventDescriptors = eventstorage.Events;
        }
        public void Setup()
        {
            var eventStore       = new TestEventStore();
            var eventPublisher   = new TestEventPublisher();
            var snapshotStrategy = new DefaultSnapshotStrategy();

            _rep = new Repository <TestAggregateNoParameterLessConstructor>(eventStore, null, eventPublisher, snapshotStrategy);
        }
Ejemplo n.º 6
0
        public void Setup()
        {
            var eventStore         = new TestEventStore();
            var testEventPublisher = new TestEventPublisher();
            var snapshotStore      = new NullSnapshotStore();
            var snapshotStrategy   = new DefaultSnapshotStrategy();

            _rep = new Repository <TestAggregate>(eventStore, snapshotStore, testEventPublisher, snapshotStrategy);
        }
Ejemplo n.º 7
0
        public void When_aggregate_type_doesnt_have_support_snapshoting()
        {
            var snapshotAggregateType = typeof(StubAggregate);

            var defaultSnapshotStrategy = new DefaultSnapshotStrategy();
            var hasSupport = defaultSnapshotStrategy.CheckSnapshotSupport(snapshotAggregateType);

            hasSupport.Should().BeFalse();
        }
Ejemplo n.º 8
0
        public GetAnAggregateWithASnapshotTest()
        {
            var eventStore         = new TestInMemoryEventStore();
            var snapshotStore      = new TestSnapshotStore();
            var snapshotStrategy   = new DefaultSnapshotStrategy(snapshotStore);
            var snapshotRepository = new SnapshotRepository(snapshotStore, snapshotStrategy, new Repository(eventStore), eventStore);
            var session            = new Session(snapshotRepository);

            _aggregate = session.GetAsync <TestSnapshotAggregate>(Guid.NewGuid().ToString()).Result;
        }
Ejemplo n.º 9
0
        public When_getting_a_snapshot_aggregate_with_no_snapshot()
        {
            var eventStore       = new TestEventStore();
            var snapshotStore    = new NullSnapshotStore();
            var snapshotStrategy = new DefaultSnapshotStrategy();
            var repository       = new SnapshotRepository(snapshotStore, snapshotStrategy, new Repository(eventStore), eventStore);
            var session          = new Session(repository);

            _aggregate = session.Get <TestSnapshotAggregate>(Guid.NewGuid());
        }
Ejemplo n.º 10
0
        public void Should_not_make_snapshot()
        {
            var defaultSnapshotStrategy = new DefaultSnapshotStrategy();

            var aggregate = Mock.Of <IAggregate>();

            var makeSnapshot = defaultSnapshotStrategy.ShouldMakeSnapshot(aggregate);

            makeSnapshot.Should().BeFalse();
        }
        public When_getting_an_aggregate_with_snapshot()
        {
            var eventStore         = new TestInMemoryEventStore();
            var snapshotStore      = new TestSnapshotStore();
            var snapshotStrategy   = new DefaultSnapshotStrategy();
            var snapshotRepository = new SnapshotRepository(snapshotStore, snapshotStrategy, new Repository(eventStore), eventStore);
            var session            = new Session(snapshotRepository);

            _aggregate = session.Get <TestSnapshotAggregate>(Guid.NewGuid()).Result;
        }
Ejemplo n.º 12
0
        public void Setup()
        {
            var eventStore       = new TestEventStore();
            var eventPublisher   = new TestEventPublisher();
            var snapshotStore    = new TestSnapshotStore();
            var snapshotStrategy = new DefaultSnapshotStrategy();
            var rep = new Repository <TestSnapshotAggregate>(eventStore, snapshotStore, eventPublisher, snapshotStrategy);

            _aggregate = rep.Get(Guid.NewGuid());
        }
Ejemplo n.º 13
0
        public void Setup()
        {
            _eventStore     = new TestEventStore();
            _eventPublisher = new TestEventPublisher();
            var snapshotstore    = new NullSnapshotStore();
            var snapshotStrategy = new DefaultSnapshotStrategy();

            _rep       = new Repository <TestAggregateNoParameterLessConstructor>(_eventStore, snapshotstore, _eventPublisher, snapshotStrategy);
            _aggregate = new TestAggregateNoParameterLessConstructor(2);
        }
Ejemplo n.º 14
0
        public void Should_make_snapshot()
        {
            var defaultSnapshotStrategy = new DefaultSnapshotStrategy();

            var snapshotAggregate = Mock.Of <ISnapshotAggregate>();

            var makeSnapshot = defaultSnapshotStrategy.ShouldMakeSnapshot(snapshotAggregate);

            makeSnapshot.Should().BeTrue();
        }
        public void Setup()
        {
            var eventStore       = new TestEventStore();
            var snapshotStore    = new NullSnapshotStore();
            var snapshotStrategy = new DefaultSnapshotStrategy();
            var repository       = new SnapshotRepository(snapshotStore, snapshotStrategy, new Repository(eventStore), eventStore);
            var session          = new Session(repository);

            _aggregate = session.Get <TestSnapshotAggregate>(Guid.NewGuid());
        }
Ejemplo n.º 16
0
        public When_getting_not_snapshotable_aggreate()
        {
            var eventStore = new TestEventStore();

            _snapshotStore = new TestSnapshotStore();
            var snapshotStrategy = new DefaultSnapshotStrategy();
            var repository       = new SnapshotRepository(_snapshotStore, snapshotStrategy, new Repository(eventStore), eventStore);
            var session          = new Session(repository);

            _aggregate = session.Get <TestAggregate>(Guid.NewGuid()).Result;
        }
        public void Setup()
        {
            var eventStore         = new TestInMemoryEventStore();
            var eventPublisher     = new TestEventPublisher();
            var snapshotStore      = new TestSnapshotStore();
            var snapshotStrategy   = new DefaultSnapshotStrategy();
            var snapshotRepository = new SnapshotRepository(snapshotStore, snapshotStrategy, new Repository(eventStore, eventPublisher), eventStore);
            var session            = new Session(snapshotRepository);

            _aggregate = session.GetAsync <TestSnapshotAggregate>(Guid.NewGuid()).Result;
        }
        public When_getting_a_snapshot_aggregate_with_no_snapshot()
        {
            _eventStore = new TestEventStore();
            var snapshotStore    = new NullSnapshotStore();
            var snapshotStrategy = new DefaultSnapshotStrategy();
            var repository       = new SnapshotRepository(snapshotStore, snapshotStrategy, new Repository(_eventStore), _eventStore);
            var session          = new Session(repository);

            _token     = new CancellationToken();
            _aggregate = session.Get <TestSnapshotAggregate>(Guid.NewGuid(), cancellationToken: _token).Result;
        }
        public GetNotSnapshotableAggregateTest()
        {
            var eventStore = new TestEventStore();

            _snapshotStore = new TestSnapshotStore();
            var snapshotStrategy = new DefaultSnapshotStrategy(_snapshotStore);
            var repository       = new SnapshotRepository(_snapshotStore, snapshotStrategy, new Repository(eventStore), eventStore);
            var session          = new Session(repository);

            _aggregate = session.GetAsync <TestAggregate>(Guid.NewGuid().ToString()).Result;
        }
Ejemplo n.º 20
0
        public void Setup()
        {
            var eventStore       = new TestSnapshotEventStore();
            var eventPublisher   = new TestEventPublisher();
            var snapshotStore    = new NullSnapshotStore();
            var snapshotStrategy = new DefaultSnapshotStrategy <ISingleSignOnToken>();
            var aggregateFactory = new AggregateFactory(new TestDependencyResolver());
            var repository       = new SnapshotRepository <ISingleSignOnToken>(snapshotStore, snapshotStrategy, new Repository <ISingleSignOnToken>(aggregateFactory, eventStore, eventPublisher, new NullCorrelationIdHelper()), eventStore, aggregateFactory);
            var session          = new UnitOfWork <ISingleSignOnToken>(repository);

            _aggregate = session.Get <TestSnapshotAggregate>(Guid.NewGuid());
        }
Ejemplo n.º 21
0
        public void Setup()
        {
            var eventStore         = new TestInMemoryEventStore();
            var eventPublisher     = new TestEventPublisher();
            var snapshotStore      = new TestSnapshotStore();
            var snapshotStrategy   = new DefaultSnapshotStrategy <ISingleSignOnToken>();
            var dependencyResolver = new TestDependencyResolver(null);
            var aggregateFactory   = new AggregateFactory(dependencyResolver, dependencyResolver.Resolve <ILogger>());
            var snapshotRepository = new SnapshotRepository <ISingleSignOnToken>(snapshotStore, snapshotStrategy, new AggregateRepository <ISingleSignOnToken>(aggregateFactory, eventStore, eventPublisher, new NullCorrelationIdHelper(), new ConfigurationManager()), eventStore, aggregateFactory);
            var session            = new UnitOfWork <ISingleSignOnToken>(snapshotRepository);

            _aggregate = session.Get <TestSnapshotAggregate>(Guid.NewGuid());
        }
        public GetSnapshotAggregateWithNoSnapshotTest()
        {
            var eventStore         = new TestEventStore();
            var snapshotStore      = new NullSnapshotStore();
            var snapshotStrategy   = new DefaultSnapshotStrategy(snapshotStore);
            var repository         = new SnapshotRepository(snapshotStore, snapshotStrategy, new Repository(eventStore), eventStore);
            var eventStoreSettings = new TestEventStoreSettings {
                SessionLockEnabled = false
            };
            var session = new Session(repository, eventStoreSettings, null);

            _aggregate = session.GetAsync <TestSnapshotAggregate>(Guid.NewGuid().ToString()).Result;
        }
Ejemplo n.º 23
0
        public EventSourceHelper(List <IEvent> existingEvents)
        {
            var eventpublisher = new SpecEventPublisher();
            var eventstorage   = new SpecEventStorage(eventpublisher, existingEvents);

            var snapshotstorage = new SpecSnapShotStorage(null);

            var snapshotStrategy = new DefaultSnapshotStrategy();
            var repository       = new SnapshotRepository(snapshotstorage, snapshotStrategy, new Repository(eventstorage), eventstorage);

            Session          = new Session(repository);
            PublishedEvents  = eventpublisher.PublishedEvents;
            EventDescriptors = eventstorage.Events;
        }
        public void Setup()
        {
            var eventStore     = new TestEventStore();
            var eventPublisher = new TestEventPublisher();

            _snapshotStore = new TestSnapshotStore();
            var snapshotStrategy = new DefaultSnapshotStrategy();
            var rep       = new Repository <TestSnapshotAggregate>(eventStore, _snapshotStore, eventPublisher, snapshotStrategy);
            var aggregate = new TestSnapshotAggregate();

            for (int i = 0; i < 30; i++)
            {
                aggregate.DoSomething();
            }
            rep.Save(aggregate, 0);
        }
Ejemplo n.º 25
0
        public void Setup()
        {
            var eventStore = new TestInMemoryEventStore();

            _snapshotStore = new TestSnapshotStore();
            var snapshotStrategy = new DefaultSnapshotStrategy();
            var repository       = new SnapshotRepository(_snapshotStore, snapshotStrategy, new Repository(eventStore), eventStore);
            var session          = new Session(repository);
            var aggregate        = new TestSnapshotAggregate();

            for (var i = 0; i < 200; i++)
            {
                aggregate.DoSomething();
            }
            session.Add(aggregate);
            session.Commit();
        }
Ejemplo n.º 26
0
        public When_saving_a_snapshotable_aggregate_for_each_change()
        {
            IEventStore eventStore = new TestInMemoryEventStore();

            _snapshotStore = new TestInMemorySnapshotStore();
            var snapshotStrategy = new DefaultSnapshotStrategy();
            var repository       = new SnapshotRepository(_snapshotStore, snapshotStrategy, new Repository(eventStore), eventStore);

            _session   = new Session(repository);
            _aggregate = new TestSnapshotAggregate();

            for (var i = 0; i < 150; i++)
            {
                _session.Add(_aggregate);
                _aggregate.DoSomething();
                _session.Commit();
            }
        }
Ejemplo n.º 27
0
        public SaveSnapshotableAggregateForEachChange()
        {
            IEventStore eventStore = new TestInMemoryEventStore();

            _snapshotStore = new TestInMemorySnapshotStore();
            var snapshotStrategy = new DefaultSnapshotStrategy(_snapshotStore);
            var repository       = new SnapshotRepository(_snapshotStore, snapshotStrategy, new Repository(eventStore), eventStore);

            _session   = new Session(repository);
            _aggregate = new TestSnapshotAggregate();

            for (var i = 0; i < 150; i++)
            {
                _session.Add(_aggregate);
                _aggregate.DoSomething();
                _session.CommitAsync().Wait();
            }
        }
Ejemplo n.º 28
0
        public void Setup()
        {
            IEventStore eventStore     = new TestInMemoryEventStore();
            var         eventPublisher = new TestEventPublisher();

            _snapshotStore = new TestInMemorySnapshotStore();
            var snapshotStrategy = new DefaultSnapshotStrategy();
            var repository       = new SnapshotRepository(_snapshotStore, snapshotStrategy, new Repository(eventStore, eventPublisher), eventStore);

            _session   = new Session(repository);
            _aggregate = new TestSnapshotAggregate();

            for (var i = 0; i < 20; i++)
            {
                _session.Add(_aggregate);
                _aggregate.DoSomething();
                _session.Commit();
            }
        }
        public void Setup()
        {
            var eventStore     = new TestInMemoryEventStore();
            var eventPublisher = new TestEventPublisher();

            _snapshotStore = new TestSnapshotStore();
            var snapshotStrategy = new DefaultSnapshotStrategy <ISingleSignOnToken>();
            var aggregateFactory = new AggregateFactory(null);
            var repository       = new SnapshotRepository <ISingleSignOnToken>(_snapshotStore, snapshotStrategy, new Repository <ISingleSignOnToken>(aggregateFactory, eventStore, eventPublisher, new NullCorrelationIdHelper()), eventStore, aggregateFactory);
            var session          = new UnitOfWork <ISingleSignOnToken>(repository);
            var aggregate        = new TestSnapshotAggregate();

            for (int i = 0; i < 30; i++)
            {
                aggregate.DoSomething();
            }
            session.Add(aggregate);
            session.Commit();
        }
Ejemplo n.º 30
0
        public void Run()
        {
            var eventstorage     = new SpecEventStorage(Given().ToList());
            var snapshotstorage  = new SpecSnapShotStorage(Snapshot);
            var eventpublisher   = new SpecEventPublisher();
            var snapshotStrategy = new DefaultSnapshotStrategy();

            Repository = new Repository <TAggregate>(eventstorage, snapshotstorage, eventpublisher, snapshotStrategy);

            Aggregate = Repository.Get(Guid.Empty);

            var handler = BuildHandler();

            handler.Handle(When());

            Snapshot         = snapshotstorage.Snapshot;
            PublishedEvents  = eventpublisher.PublishedEvents;
            EventDescriptors = eventstorage.Events;
        }