Exemplo n.º 1
0
        public void SetUp()
        {
            Current = new Tenant(new TenantATestSettings());

            var connectionString = ConfigurationManager.ConnectionStrings["eventstore"].ConnectionString;
            var url    = new MongoUrl(connectionString);
            var client = new MongoClient(url);

            _db = client.GetDatabase(url.DatabaseName);
            client.DropDatabase(url.DatabaseName);

            _identityConverter = new IdentityManager(new InMemoryCounterService());
            _identityConverter.RegisterIdentitiesFromAssembly(GetType().Assembly);
            MongoFlatIdSerializerHelper.Initialize(_identityConverter);
            var loggerFactory = Substitute.For <ILoggerFactory>();

            loggerFactory.Create(Arg.Any <Type>()).Returns(NullLogger.Instance);
            _eventStore = new EventStoreFactory(loggerFactory).BuildEventStore(connectionString);
            _sut        = CreateRepository();

            _container = new WindsorContainer();
            _container.AddFacility <TypedFactoryFacility>();
            _container.Register(Component.For <IRepositoryExFactory>().AsFactory());
            _container.Register(Component
                                .For <IRepositoryEx>()
                                .UsingFactoryMethod(() => CreateRepository())
                                .LifestyleTransient());

            _aggregateCachedRepositoryFactory = new AggregateCachedRepositoryFactory(
                _container.Resolve <IRepositoryExFactory>(),
                false);
        }
Exemplo n.º 2
0
        private static Version GetVersion(string repoOrWorkDir, string tagPrefix, MajorMinor minMajorMinor, string buildMeta, Verbosity verbosity)
        {
            var log = new Logger(verbosity);

            if (log.IsDebugEnabled)
            {
                log.Debug($"MinVer {informationalVersion}.");
            }

            if (!RepositoryEx.TryCreateRepo(repoOrWorkDir, out var repo))
            {
                var version = new Version(minMajorMinor?.Major ?? 0, minMajorMinor?.Minor ?? 0, buildMeta);

                log.WarnIsNotAValidRepositoryOrWorkDirUsingDefaultVersion(repoOrWorkDir, version);

                return(version);
            }

            try
            {
                return(Versioner.GetVersion(repo, tagPrefix, minMajorMinor, buildMeta, log));
            }
            finally
            {
                repo.Dispose();
            }
        }
Exemplo n.º 3
0
 public void SetUp()
 {
     _db.Drop();
     ConfigureEventStore();
     Repository = new RepositoryEx(
         _eventStore,
         new AggregateFactory(),
         new AlwaysConflict(),
         _identityConverter,
         _logger
         );
 }
Exemplo n.º 4
0
        private RepositoryEx CreateRepository()
        {
            var repositoryEx = new RepositoryEx(
                _eventStore,
                _aggregateFactory,
                new ConflictDetector(),
                _identityConverter,
                NSubstitute.Substitute.For <NEventStore.Logging.ILog>()
                );

            repositoryEx.SnapshotManager = Substitute.For <ISnapshotManager>();
            repositoryEx.SnapshotManager.Load("", 0, typeof(SampleAggregate)).ReturnsForAnyArgs <ISnapshot>((ISnapshot)null);
            return(repositoryEx);
        }
        protected void ConfigureEventStore()
        {
            var loggerFactory = Substitute.For <ILoggerFactory>();

            loggerFactory.Create(Arg.Any <Type>()).Returns(NullLogger.Instance);
            var factory = new EventStoreFactory(loggerFactory);

            _eventStore = factory.BuildEventStore(_eventStoreConnectionString);
            Repository  = new RepositoryEx(
                _eventStore,
                new AggregateFactory(),
                new ConflictDetector(),
                _identityConverter
                );
        }
Exemplo n.º 6
0
        public void profile_snapshot_opt_out()
        {
            var sampleAggregateId = new SampleAggregateId(1);
            var aggregate         = TestAggregateFactory.Create <SampleAggregate, SampleAggregate.State>(new SampleAggregate.State(), sampleAggregateId);

            aggregate.Create();

            _sut.Save(aggregate, Guid.NewGuid(), null);

            int max = 20;

            for (int t = 1; t < max; t++)
            {
                aggregate.Touch();
                _sut.Save(aggregate, Guid.NewGuid(), null);

                if (t == max - 5)
                {
                    var snap = ((ISnapshotable)aggregate).GetSnapshot();
                    _eventStore.Advanced.AddSnapshot(new Snapshot("Jarvis", sampleAggregateId.AsString(), aggregate.Version, snap));
                }
            }

            SnapshotsSettings.OptOut(typeof(SampleAggregate));

            var sw = new Stopwatch();

            sw.Start();
            for (int c = 1; c <= 100; c++)
            {
                using (var repo = new RepositoryEx(
                           _eventStore,
                           _aggregateFactory,
                           new ConflictDetector(),
                           _identityConverter,
                           NSubstitute.Substitute.For <NEventStore.Logging.ILog>()))
                {
                    var loaded = repo.GetById <SampleAggregate>(sampleAggregateId);
                }
            }
            sw.Stop();
            SnapshotsSettings.ClearOptOut();
            Debug.WriteLine("Read time {0} ms", sw.ElapsedMilliseconds);
        }
Exemplo n.º 7
0
        public void save_stream()
        {
            var eventStore = _factory.BuildEventStore(_connectionString);
            var repo       = new RepositoryEx(
                eventStore,
                new AggregateFactory(),
                new ConflictDetector(),
                new IdentityManager(new InMemoryCounterService())
                );

            var aggregate = TestAggregateFactory.Create <SampleAggregate, SampleAggregate.State>(new SampleAggregate.State(), new SampleAggregateId(1));

            aggregate.Create();
            repo.Save(
                aggregate,
                new Guid("{7A63A302-5575-4148-A86D-4421AAFF2019}"),
                null
                );
        }
Exemplo n.º 8
0
        public void SetUp()
        {
            Current = new Tenant(new TenantATestSettings());

            var connectionString = ConfigurationManager.ConnectionStrings["eventstore"].ConnectionString;
            var url    = new MongoUrl(connectionString);
            var client = new MongoClient(url);

            _db = client.GetServer().GetDatabase(url.DatabaseName);
            _db.Drop();

            _identityConverter = new IdentityManager(new InMemoryCounterService());
            _identityConverter.RegisterIdentitiesFromAssembly(GetType().Assembly);
            var loggerFactory = Substitute.For <ILoggerFactory>();

            loggerFactory.Create(Arg.Any <Type>()).Returns(NullLogger.Instance);
            _eventStore = new EventStoreFactory(loggerFactory).BuildEventStore(connectionString);
            _repository = CreateRepository();
        }
Exemplo n.º 9
0
        private static Version GetVersion(string repoOrWorkDir, string tagPrefix, VersionPart autoIncrement, ILogger log)
        {
            if (!RepositoryEx.TryCreateRepo(repoOrWorkDir, out var repo))
            {
                var version = new Version();

                log.Warn(1001, $"'{repoOrWorkDir}' is not a valid repository or working directory. Using default version {version}.");

                return(version);
            }

            try
            {
                return(repo.GetVersion(tagPrefix, autoIncrement, log));
            }
            finally
            {
                repo.Dispose();
            }
        }