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 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()); }