private IProjection[] SetupTwoProjectionsError() { _concurrentCheckpointTrackerSut = new ConcurrentCheckpointTracker(_db); var rebuildContext = new RebuildContext(false); var storageFactory = new MongoStorageFactory(_db, rebuildContext); var writer1 = new CollectionWrapper <SampleReadModel, string>(storageFactory, new NotifyToNobody()); var writer2 = new CollectionWrapper <SampleReadModel2, string>(storageFactory, new NotifyToNobody()); var projection1 = new Projection(writer1); var projection2 = new Projection2(writer2); var projections = new IProjection[] { projection1, projection2 }; var p1 = new Checkpoint(projection1.Info.CommonName, 42, projection1.Info.Signature); p1.Slot = projection1.Info.SlotName; _checkPoints.Save(p1, p1.Id); var p2 = new Checkpoint(projection2.Info.CommonName, 40, projection2.Info.Signature); p2.Slot = projection1.Info.SlotName; _checkPoints.Save(p2, p2.Id); _concurrentCheckpointTrackerSut.SetUp(projections, 1, false); _slotStatusCheckerSut = new SlotStatusManager(_db, projections.Select(p => p.Info).ToArray()); return(projections); }
protected void ConfigureProjectionEngine() { if (Engine != null) { Engine.Stop(); } _tracker = new ConcurrentCheckpointTracker(Database); _statusChecker = new ConcurrentCheckpointStatusChecker(Database); var tenantId = new TenantId("engine"); var config = new ProjectionEngineConfig() { Slots = new[] { "*" }, EventStoreConnectionString = _eventStoreConnectionString, TenantId = tenantId }; _rebuildContext = new RebuildContext(false); StorageFactory = new MongoStorageFactory(Database, _rebuildContext); Engine = new ConcurrentProjectionsEngine( _tracker, BuildProjections().ToArray(), new PollingClientWrapper(new CommitEnhancer(_identityConverter), true, _tracker), new NullHouseKeeper(), _rebuildContext, new NullNotifyCommitHandled(), config ); Engine.LoggerFactory = Substitute.For <ILoggerFactory>(); Engine.LoggerFactory.Create(Arg.Any <Type>()).Returns(NullLogger.Instance); Engine.StartWithManualPoll(); }
public void SetUp() { _client.DropDatabase(_db.DatabaseNamespace.DatabaseName); var rebuildContext = new RebuildContext(false); var storageFactory = new MongoStorageFactory(_db, rebuildContext); sut = new CollectionWrapper <SampleReadModelTestId, TestId>(storageFactory, new NotifyToNobody()); var projection = new ProjectionTypedId(sut); }
protected void ConfigureProjectionEngine(Boolean dropCheckpoints = true) { if (Engine != null) { Engine.Stop(); } if (dropCheckpoints) { _checkpoints.Drop(); } _tracker = new ConcurrentCheckpointTracker(Database); _statusChecker = new ConcurrentCheckpointStatusChecker(Database); var tenantId = new TenantId("engine"); var config = new ProjectionEngineConfig() { Slots = new[] { "*" }, EventStoreConnectionString = _eventStoreConnectionString, TenantId = tenantId, BucketInfo = new List <BucketInfo>() { new BucketInfo() { Slots = new[] { "*" }, BufferSize = 10 } }, DelayedStartInMilliseconds = 1000, ForcedGcSecondsInterval = 0, EngineVersion = "v2", }; RebuildSettings.Init(OnShouldRebuild(), OnShouldUseNitro()); _rebuildContext = new RebuildContext(RebuildSettings.NitroMode); StorageFactory = new MongoStorageFactory(Database, _rebuildContext); Func <IPersistStreams, CommitPollingClient> pollingClientFactory = ps => new CommitPollingClient( ps, new CommitEnhancer(_identityConverter), OnGetPollingClientId(), NullLogger.Instance); Engine = new ProjectionEngine( pollingClientFactory, _tracker, BuildProjections().ToArray(), new NullHouseKeeper(), _rebuildContext, new NullNotifyCommitHandled(), config ); Engine.LoggerFactory = Substitute.For <ILoggerFactory>(); Engine.LoggerFactory.Create(Arg.Any <Type>()).Returns(NullLogger.Instance); OnStartPolling(); }
public virtual void TestFixtureSetUp() { _eventStoreConnectionString = ConfigurationManager.ConnectionStrings["eventstore"].ConnectionString; var url = new MongoUrl(_eventStoreConnectionString); var client = new MongoClient(url); _db = client.GetDatabase(url.DatabaseName); _db.Drop(); ProjectionEngineConfig config = new ProjectionEngineConfig(); config.EventStoreConnectionString = _eventStoreConnectionString; config.Slots = new string[] { "*" }; config.TenantId = new TenantId("A"); config.BucketInfo = new List <BucketInfo>(); config.BucketInfo.Add(new BucketInfo() { Slots = new[] { "*" }, BufferSize = 10000 }); _identityConverter = new IdentityManager(new CounterService(_db)); _identityConverter.RegisterIdentitiesFromAssembly(typeof(SampleAggregateId).Assembly); ConfigureEventStore(); CommitEnhancer commitEnhancer = new CommitEnhancer(_identityConverter); _eventUnwinder = new EventUnwinder(config, new TestLogger(LoggerLevel.Info)); _unwindedEventCollection = _db.GetCollection <UnwindedDomainEvent>("UnwindedEvents"); MongoFlatMapper.EnableFlatMapping(true); MongoFlatIdSerializerHelper.Initialize(_identityConverter); var rebuildContext = new RebuildContext(NitroEnabled); _storageFactory = new MongoStorageFactory(_db, rebuildContext); _reader1 = new MongoReader <SampleReadModel, string>(_db); _reader2 = new MongoReader <SampleReadModel2, string>(_db); _reader3 = new MongoReader <SampleReadModel3, string>(_db); //now configure RebuildProjectionEngine _tracker = new ConcurrentCheckpointTracker(_db); var projections = BuildProjections().ToArray(); _tracker.SetUp(projections, 1, false); ProjectionEventInspector inspector = new ProjectionEventInspector(); inspector.AddAssembly(Assembly.GetExecutingAssembly()); sut = new RebuildProjectionEngine(_eventUnwinder, _tracker, projections, rebuildContext, config, inspector); sut.Logger = new TestLogger(LoggerLevel.Debug); _checkpointCollection = _db.GetCollection <Checkpoint>("checkpoints"); }
public void SetUp() { _client.DropDatabase(_db.DatabaseNamespace.DatabaseName); var rebuildContext = new RebuildContext(false); var storageFactory = new MongoStorageFactory(_db, rebuildContext); _notifyToSubscribersDouble = Substitute.For <INotifyToSubscribers>(); _notifyToSubscribersDouble.Send(null).ReturnsForAnyArgs(Task.CompletedTask); sut = new CollectionWrapper <SampleReadModelTest, String>(storageFactory, _notifyToSubscribersDouble); //It is important to create the projection to attach the collection wrapper new TypedIdProjection(sut); }
protected async Task ConfigureProjectionEngineAsync(Boolean dropCheckpoints = true) { Engine?.Stop(); if (dropCheckpoints) { _checkpoints.Drop(); } _tracker = new ConcurrentCheckpointTracker(Database); _statusChecker = new MongoDirectConcurrentCheckpointStatusChecker(Database); var tenantId = new TenantId("engine"); var config = new ProjectionEngineConfig() { Slots = new[] { "*" }, EventStoreConnectionString = _eventStoreConnectionString, TenantId = tenantId, BucketInfo = new List <BucketInfo>() { new BucketInfo() { Slots = new[] { "*" }, BufferSize = 10 } }, DelayedStartInMilliseconds = 0, ForcedGcSecondsInterval = 0, EngineVersion = "v2", }; RebuildSettings.Init(OnShouldRebuild(), OnShouldUseNitro()); var rebuildContext = new RebuildContext(RebuildSettings.NitroMode); StorageFactory = new MongoStorageFactory(Database, rebuildContext); Engine = new ProjectionEngine( _pollingClientFactory, Persistence, _tracker, BuildProjections().ToArray(), new NullHouseKeeper(), new NullNotifyCommitHandled(), config, NullLogger.Instance, NullLoggerThreadContextManager.Instance); Engine.LoggerFactory = Substitute.For <ILoggerFactory>(); Engine.LoggerFactory.Create(Arg.Any <Type>()).Returns(NullLogger.Instance); await OnStartPolling().ConfigureAwait(false); }
public void TestFixtureSetUp() { var connectionString = ConfigurationManager.ConnectionStrings["readmodel"].ConnectionString; var url = new MongoUrl(connectionString); _client = new MongoClient(url); _db = _client.GetDatabase(url.DatabaseName); TestHelper.RegisterSerializerForFlatId <TestId>(); var rebuildContext = new RebuildContext(false); var storageFactory = new MongoStorageFactory(_db, rebuildContext); sut = new CollectionWrapper <SampleReadModelPollableTest, TestId>(storageFactory, new NotifyToNobody()); new ProjectionPollableReadmodel(sut); }
private void SetupOneProjectionNew() { _sut = new ConcurrentCheckpointTracker(_db); var rebuildContext = new RebuildContext(false); var storageFactory = new MongoStorageFactory(_db, rebuildContext); var writer1 = new CollectionWrapper <SampleReadModel, string>(storageFactory, new NotifyToNobody()); var writer2 = new CollectionWrapper <SampleReadModel2, string>(storageFactory, new NotifyToNobody()); var projection1 = new Projection(writer1); var projection2 = new Projection2(writer2); var projections = new IProjection[] { projection1, projection2 }; var p1 = new Checkpoint(projection1.GetCommonName(), "42"); p1.Slot = projection1.GetSlotName(); _checkPoints.Save(p1); _sut.SetUp(projections, 1); }
/// <summary> /// If a rebuild starts then stops, we have a particular situation where signature is ok, current is null /// and if the slot is not marked as to rebuild, the engine will simply restart the slot redispatching everything. /// </summary> private void SetupOneProjectionWithCurrentNull() { _concurrentCheckpointTrackerSut = new ConcurrentCheckpointTracker(_db, 60); var rebuildContext = new RebuildContext(false); var storageFactory = new MongoStorageFactory(_db, rebuildContext); var writer1 = new CollectionWrapper <SampleReadModel, string>(storageFactory, new NotifyToNobody()); var projection1 = new Projection(writer1); var projections = new IProjection[] { projection1 }; var p1 = new Checkpoint(projection1.Info.CommonName, 42, projection1.Info.Signature); p1.Slot = projection1.Info.SlotName; p1.Value = 42; p1.Current = null; _checkPoints.Save(p1, p1.Id); _concurrentCheckpointTrackerSut.SetUp(projections, 1, false); _slotStatusCheckerSut = new SlotStatusManager(_db, projections.Select(p => p.Info).ToArray()); }
public void SetUp() { _context = new RebuildContext(false); _inmemoryCollection = _context.GetCollection <SampleReadModelWithStringKey, string>("sample", false); }