public void setup() { _subscribeProjectionHandler = new TestHandler<ReaderSubscriptionManagement.Subscribe>(); _writeEventHandler = new TestHandler<ClientMessage.WriteEvents>(); _bus.Subscribe(_subscribeProjectionHandler); _bus.Subscribe(_writeEventHandler); _stateHandler = GivenProjectionStateHandler(); _firstWriteCorrelationId = Guid.NewGuid(); _workerId = Guid.NewGuid(); var dispatcher = new ProjectionManagerMessageDispatcher(new Dictionary<Guid, IPublisher>{{_workerId, GetInputQueue()}}); _projectionCorrelationId = Guid.NewGuid(); _projectionConfig = GivenProjectionConfig(); var projectionProcessingStrategy = GivenProjectionProcessingStrategy(); _coreProjection = GivenCoreProjection(projectionProcessingStrategy); _bus.Subscribe<CoreProjectionProcessingMessage.CheckpointCompleted>(_coreProjection); _bus.Subscribe<CoreProjectionProcessingMessage.CheckpointLoaded>(_coreProjection); _bus.Subscribe<CoreProjectionProcessingMessage.PrerecordedEventsLoaded>(_coreProjection); _bus.Subscribe<CoreProjectionProcessingMessage.RestartRequested>(_coreProjection); _bus.Subscribe<CoreProjectionProcessingMessage.Failed>(_coreProjection); _bus.Subscribe(new AdHocHandler<ProjectionCoreServiceMessage.CoreTick>(tick => tick.Action())); _bus.Subscribe(new AdHocHandler<ReaderCoreServiceMessage.ReaderTick>(tick => tick.Action())); _bus.Subscribe<PartitionProcessingResultOutputBase>(dispatcher); PreWhen(); When(); }
public void setup() { _subscribeProjectionHandler = new TestHandler <ReaderSubscriptionManagement.Subscribe>(); _writeEventHandler = new TestHandler <ClientMessage.WriteEvents>(); _bus.Subscribe(_subscribeProjectionHandler); _bus.Subscribe(_writeEventHandler); _stateHandler = GivenProjectionStateHandler(); _firstWriteCorrelationId = Guid.NewGuid(); _workerId = Guid.NewGuid(); var dispatcher = new ProjectionManagerMessageDispatcher(new Dictionary <Guid, IPublisher> { { _workerId, GetInputQueue() } }); _projectionCorrelationId = Guid.NewGuid(); _projectionConfig = GivenProjectionConfig(); var projectionProcessingStrategy = GivenProjectionProcessingStrategy(); _coreProjection = GivenCoreProjection(projectionProcessingStrategy); _bus.Subscribe <CoreProjectionProcessingMessage.CheckpointCompleted>(_coreProjection); _bus.Subscribe <CoreProjectionProcessingMessage.CheckpointLoaded>(_coreProjection); _bus.Subscribe <CoreProjectionProcessingMessage.PrerecordedEventsLoaded>(_coreProjection); _bus.Subscribe <CoreProjectionProcessingMessage.RestartRequested>(_coreProjection); _bus.Subscribe <CoreProjectionProcessingMessage.Failed>(_coreProjection); _bus.Subscribe(new AdHocHandler <ProjectionCoreServiceMessage.CoreTick>(tick => tick.Action())); _bus.Subscribe(new AdHocHandler <ReaderCoreServiceMessage.ReaderTick>(tick => tick.Action())); _bus.Subscribe <PartitionProcessingResultOutputBase>(dispatcher); PreWhen(); When(); }
private static void SubscribeMainBus( ISubscriber mainBus, ProjectionManager projectionManager, ProjectionType runProjections, IODispatcher ioDispatcher, ProjectionManagerMessageDispatcher projectionManagerMessageDispatcher) { if (runProjections >= ProjectionType.System) { mainBus.Subscribe <ProjectionManagementMessage.Command.Post>(projectionManager); mainBus.Subscribe <ProjectionManagementMessage.Command.PostBatch>(projectionManager); mainBus.Subscribe <ProjectionManagementMessage.Command.UpdateQuery>(projectionManager); mainBus.Subscribe <ProjectionManagementMessage.Command.GetQuery>(projectionManager); mainBus.Subscribe <ProjectionManagementMessage.Command.Delete>(projectionManager); mainBus.Subscribe <ProjectionManagementMessage.Command.GetStatistics>(projectionManager); mainBus.Subscribe <ProjectionManagementMessage.Command.GetState>(projectionManager); mainBus.Subscribe <ProjectionManagementMessage.Command.GetResult>(projectionManager); mainBus.Subscribe <ProjectionManagementMessage.Command.Disable>(projectionManager); mainBus.Subscribe <ProjectionManagementMessage.Command.Enable>(projectionManager); mainBus.Subscribe <ProjectionManagementMessage.Command.Abort>(projectionManager); mainBus.Subscribe <ProjectionManagementMessage.Command.SetRunAs>(projectionManager); mainBus.Subscribe <ProjectionManagementMessage.Command.Reset>(projectionManager); mainBus.Subscribe <ProjectionManagementMessage.Command.GetConfig>(projectionManager); mainBus.Subscribe <ProjectionManagementMessage.Command.UpdateConfig>(projectionManager); mainBus.Subscribe <ProjectionManagementMessage.Internal.CleanupExpired>(projectionManager); mainBus.Subscribe <ProjectionManagementMessage.Internal.Deleted>(projectionManager); mainBus.Subscribe <CoreProjectionStatusMessage.Started>(projectionManager); mainBus.Subscribe <CoreProjectionStatusMessage.Stopped>(projectionManager); mainBus.Subscribe <CoreProjectionStatusMessage.Faulted>(projectionManager); mainBus.Subscribe <CoreProjectionStatusMessage.Prepared>(projectionManager); mainBus.Subscribe <CoreProjectionStatusMessage.StateReport>(projectionManager); mainBus.Subscribe <CoreProjectionStatusMessage.ResultReport>(projectionManager); mainBus.Subscribe <CoreProjectionStatusMessage.StatisticsReport>(projectionManager); mainBus.Subscribe <ProjectionSubsystemMessage.StartComponents>(projectionManager); mainBus.Subscribe <ProjectionSubsystemMessage.StopComponents>(projectionManager); } mainBus.Subscribe <ClientMessage.WriteEventsCompleted>(projectionManager); mainBus.Subscribe <ClientMessage.DeleteStreamCompleted>(projectionManager); mainBus.Subscribe <ClientMessage.ReadStreamEventsBackwardCompleted>(projectionManager); mainBus.Subscribe <ClientMessage.ReadStreamEventsForwardCompleted>(projectionManager); mainBus.Subscribe(ioDispatcher.Awaker); mainBus.Subscribe(ioDispatcher.BackwardReader); mainBus.Subscribe(ioDispatcher.ForwardReader); mainBus.Subscribe(ioDispatcher.StreamDeleter); mainBus.Subscribe(ioDispatcher.Writer); mainBus.Subscribe(ioDispatcher.EventReader); mainBus.Subscribe <IODispatcherDelayedMessage>(ioDispatcher); mainBus.Subscribe <ClientMessage.NotHandled>(ioDispatcher); mainBus.Subscribe(projectionManagerMessageDispatcher); }
public static void CreateManagerService( StandardComponents standardComponents, ProjectionsStandardComponents projectionsStandardComponents, IDictionary <Guid, IPublisher> queues, TimeSpan projectionQueryExpiry) { IQueuedHandler inputQueue = projectionsStandardComponents.LeaderInputQueue; IBus outputBus = projectionsStandardComponents.LeaderOutputBus; var ioDispatcher = new IODispatcher(outputBus, new PublishEnvelope(inputQueue), true); var projectionsController = new ProjectionsController( standardComponents.HttpForwarder, inputQueue, standardComponents.NetworkSendService); var forwarder = new RequestResponseQueueForwarder( inputQueue: projectionsStandardComponents.LeaderInputQueue, externalRequestQueue: standardComponents.MainQueue); if (projectionsStandardComponents.RunProjections != ProjectionType.None) { foreach (var httpService in standardComponents.HttpServices) { httpService.SetupController(projectionsController); } } var projectionManagerMessageDispatcher = new ProjectionManagerMessageDispatcher(queues); var projectionManager = new ProjectionManager( inputQueue, outputBus, queues, new RealTimeProvider(), projectionsStandardComponents.RunProjections, ioDispatcher, projectionQueryExpiry); SubscribeMainBus( projectionsStandardComponents.LeaderMainBus, projectionManager, projectionsStandardComponents.RunProjections, ioDispatcher, projectionManagerMessageDispatcher); SubscribeOutputBus(standardComponents, projectionsStandardComponents, forwarder, ioDispatcher); }
public void Setup() { //TODO: this became an integration test - proper ProjectionCoreService and ProjectionManager testing is required as well _bus.Subscribe(_consumer); _processingQueues = GivenProcessingQueues(); var queues = _processingQueues.ToDictionary(v => v.Item5, v => (IPublisher)v.Item1); _managerMessageDispatcher = new ProjectionManagerMessageDispatcher(queues); _manager = new ProjectionManager( GetInputQueue(), GetInputQueue(), queues, _timeProvider, ProjectionType.All, _ioDispatcher, _initializeSystemProjections); _coordinator = new ProjectionCoreCoordinator( ProjectionType.All, ProjectionCoreWorkersNode.CreateTimeoutSchedulers(queues.Count), queues.Values.ToArray(), _bus, Envelope); _bus.Subscribe<ProjectionManagementMessage.Internal.CleanupExpired>(_manager); _bus.Subscribe<ProjectionManagementMessage.Internal.Deleted>(_manager); _bus.Subscribe<CoreProjectionStatusMessage.Started>(_manager); _bus.Subscribe<CoreProjectionStatusMessage.Stopped>(_manager); _bus.Subscribe<CoreProjectionStatusMessage.Prepared>(_manager); _bus.Subscribe<CoreProjectionStatusMessage.Faulted>(_manager); _bus.Subscribe<CoreProjectionStatusMessage.StateReport>(_manager); _bus.Subscribe<CoreProjectionStatusMessage.ResultReport>(_manager); _bus.Subscribe<CoreProjectionStatusMessage.StatisticsReport>(_manager); _bus.Subscribe<CoreProjectionManagementMessage.SlaveProjectionReaderAssigned>(_manager); _bus.Subscribe<CoreProjectionStatusMessage.ProjectionWorkerStarted>(_manager); _bus.Subscribe<ProjectionManagementMessage.Command.Post>(_manager); _bus.Subscribe<ProjectionManagementMessage.Command.UpdateQuery>(_manager); _bus.Subscribe<ProjectionManagementMessage.Command.GetQuery>(_manager); _bus.Subscribe<ProjectionManagementMessage.Command.Delete>(_manager); _bus.Subscribe<ProjectionManagementMessage.Command.GetStatistics>(_manager); _bus.Subscribe<ProjectionManagementMessage.Command.GetState>(_manager); _bus.Subscribe<ProjectionManagementMessage.Command.GetResult>(_manager); _bus.Subscribe<ProjectionManagementMessage.Command.Disable>(_manager); _bus.Subscribe<ProjectionManagementMessage.Command.Enable>(_manager); _bus.Subscribe<ProjectionManagementMessage.Command.Abort>(_manager); _bus.Subscribe<ProjectionManagementMessage.Command.SetRunAs>(_manager); _bus.Subscribe<ProjectionManagementMessage.Command.Reset>(_manager); _bus.Subscribe<ProjectionManagementMessage.Command.StartSlaveProjections>(_manager); _bus.Subscribe<ClientMessage.WriteEventsCompleted>(_manager); _bus.Subscribe<ClientMessage.ReadStreamEventsBackwardCompleted>(_manager); _bus.Subscribe<ClientMessage.DeleteStreamCompleted>(_manager); _bus.Subscribe<SystemMessage.StateChangeMessage>(_manager); _bus.Subscribe<SystemMessage.SystemCoreReady>(_manager); _bus.Subscribe<ProjectionManagementMessage.ReaderReady>(_manager); _bus.Subscribe( CallbackSubscriber.Create<ProjectionManagementMessage.Starting>( starting => _queue.Publish(new ProjectionManagementMessage.ReaderReady()))); _bus.Subscribe<SystemMessage.StateChangeMessage>(_coordinator); _bus.Subscribe<SystemMessage.SystemCoreReady>(_coordinator); if (GetInputQueue() != _processingQueues.First().Item2) { _bus.Subscribe<PartitionProcessingResultBase>(_managerMessageDispatcher); _bus.Subscribe<CoreProjectionManagementControlMessage>( _managerMessageDispatcher); _bus.Subscribe<PartitionProcessingResultOutputBase>(_managerMessageDispatcher); _bus.Subscribe<ReaderSubscriptionManagement.SpoolStreamReading>(_managerMessageDispatcher); } foreach(var q in _processingQueues) SetUpCoreServices(q.Item5, q.Item1, q.Item2, q.Item3, q.Item4); //Given(); WhenLoop(); }
public void Setup() { //TODO: this became an integration test - proper ProjectionCoreService and ProjectionManager testing is required as well _bus.Subscribe(_consumer); _processingQueues = GivenProcessingQueues(); var queues = _processingQueues.ToDictionary(v => v.Item5, v => (IPublisher)v.Item1); _managerMessageDispatcher = new ProjectionManagerMessageDispatcher(queues); _manager = new ProjectionManager( GetInputQueue(), GetInputQueue(), queues, _timeProvider, ProjectionType.All, _ioDispatcher, TimeSpan.FromMinutes(Opts.ProjectionsQueryExpiryDefault), _initializeSystemProjections); _coordinator = new ProjectionCoreCoordinator( ProjectionType.All, ProjectionCoreWorkersNode.CreateTimeoutSchedulers(queues.Count), queues.Values.ToArray(), _bus, Envelope); _bus.Subscribe <ProjectionManagementMessage.Internal.CleanupExpired>(_manager); _bus.Subscribe <ProjectionManagementMessage.Internal.Deleted>(_manager); _bus.Subscribe <CoreProjectionStatusMessage.Started>(_manager); _bus.Subscribe <CoreProjectionStatusMessage.Stopped>(_manager); _bus.Subscribe <CoreProjectionStatusMessage.Prepared>(_manager); _bus.Subscribe <CoreProjectionStatusMessage.Faulted>(_manager); _bus.Subscribe <CoreProjectionStatusMessage.StateReport>(_manager); _bus.Subscribe <CoreProjectionStatusMessage.ResultReport>(_manager); _bus.Subscribe <CoreProjectionStatusMessage.StatisticsReport>(_manager); _bus.Subscribe <ProjectionManagementMessage.Command.Post>(_manager); _bus.Subscribe <ProjectionManagementMessage.Command.PostBatch>(_manager); _bus.Subscribe <ProjectionManagementMessage.Command.UpdateQuery>(_manager); _bus.Subscribe <ProjectionManagementMessage.Command.GetQuery>(_manager); _bus.Subscribe <ProjectionManagementMessage.Command.Delete>(_manager); _bus.Subscribe <ProjectionManagementMessage.Command.GetStatistics>(_manager); _bus.Subscribe <ProjectionManagementMessage.Command.GetState>(_manager); _bus.Subscribe <ProjectionManagementMessage.Command.GetResult>(_manager); _bus.Subscribe <ProjectionManagementMessage.Command.Disable>(_manager); _bus.Subscribe <ProjectionManagementMessage.Command.Enable>(_manager); _bus.Subscribe <ProjectionManagementMessage.Command.Abort>(_manager); _bus.Subscribe <ProjectionManagementMessage.Command.SetRunAs>(_manager); _bus.Subscribe <ProjectionManagementMessage.Command.Reset>(_manager); _bus.Subscribe <ClientMessage.WriteEventsCompleted>(_manager); _bus.Subscribe <ClientMessage.ReadStreamEventsForwardCompleted>(_manager); _bus.Subscribe <ClientMessage.ReadStreamEventsBackwardCompleted>(_manager); _bus.Subscribe <ClientMessage.DeleteStreamCompleted>(_manager); _bus.Subscribe <ProjectionSubsystemMessage.StartComponents>(_manager); _bus.Subscribe <ProjectionSubsystemMessage.StopComponents>(_manager); _bus.Subscribe <ProjectionSubsystemMessage.StartComponents>(_coordinator); _bus.Subscribe <ProjectionSubsystemMessage.StopComponents>(_coordinator); if (GetInputQueue() != _processingQueues.First().Item2) { _bus.Subscribe <CoreProjectionManagementControlMessage>( _managerMessageDispatcher); } foreach (var q in _processingQueues) { SetUpCoreServices(q.Item5, q.Item1, q.Item2, q.Item3, q.Item4); } //Given(); WhenLoop(); }
public void Setup() { //TODO: this became an integration test - proper ProjectionCoreService and ProjectionManager testing is required as well _bus.Subscribe(_consumer); var queues = GivenCoreQueues(); _managerMessageDispatcher = new ProjectionManagerMessageDispatcher(queues); _manager = new ProjectionManager( GetInputQueue(), GetInputQueue(), queues, _timeProvider, ProjectionType.All, _ioDispatcher, TimeSpan.FromMinutes(Opts.ProjectionsQueryExpiryDefault), _initializeSystemProjections); IPublisher inputQueue = GetInputQueue(); IPublisher publisher = GetInputQueue(); var ioDispatcher = new IODispatcher(publisher, new PublishEnvelope(inputQueue)); _bus.Subscribe <ProjectionManagementMessage.Internal.CleanupExpired>(_manager); _bus.Subscribe <ProjectionManagementMessage.Internal.Deleted>(_manager); _bus.Subscribe <CoreProjectionStatusMessage.Started>(_manager); _bus.Subscribe <CoreProjectionStatusMessage.Stopped>(_manager); _bus.Subscribe <CoreProjectionStatusMessage.Prepared>(_manager); _bus.Subscribe <CoreProjectionStatusMessage.Faulted>(_manager); _bus.Subscribe <CoreProjectionStatusMessage.StateReport>(_manager); _bus.Subscribe <CoreProjectionStatusMessage.ResultReport>(_manager); _bus.Subscribe <CoreProjectionStatusMessage.StatisticsReport>(_manager); _bus.Subscribe <CoreProjectionManagementMessage.SlaveProjectionReaderAssigned>(_manager); _bus.Subscribe <CoreProjectionStatusMessage.ProjectionWorkerStarted>(_manager); _bus.Subscribe <ProjectionManagementMessage.Command.Post>(_manager); _bus.Subscribe <ProjectionManagementMessage.Command.PostBatch>(_manager); _bus.Subscribe <ProjectionManagementMessage.Command.UpdateQuery>(_manager); _bus.Subscribe <ProjectionManagementMessage.Command.GetQuery>(_manager); _bus.Subscribe <ProjectionManagementMessage.Command.Delete>(_manager); _bus.Subscribe <ProjectionManagementMessage.Command.GetStatistics>(_manager); _bus.Subscribe <ProjectionManagementMessage.Command.GetState>(_manager); _bus.Subscribe <ProjectionManagementMessage.Command.GetResult>(_manager); _bus.Subscribe <ProjectionManagementMessage.Command.Disable>(_manager); _bus.Subscribe <ProjectionManagementMessage.Command.Enable>(_manager); _bus.Subscribe <ProjectionManagementMessage.Command.Abort>(_manager); _bus.Subscribe <ProjectionManagementMessage.Command.SetRunAs>(_manager); _bus.Subscribe <ProjectionManagementMessage.Command.Reset>(_manager); _bus.Subscribe <ProjectionManagementMessage.Command.StartSlaveProjections>(_manager); _bus.Subscribe <ClientMessage.WriteEventsCompleted>(_manager); _bus.Subscribe <ClientMessage.ReadStreamEventsBackwardCompleted>(_manager); _bus.Subscribe <ClientMessage.WriteEventsCompleted>(_manager); _bus.Subscribe <ProjectionSubsystemMessage.StartComponents>(_manager); _bus.Subscribe <ProjectionSubsystemMessage.StopComponents>(_manager); _bus.Subscribe <ProjectionManagementMessage.ReaderReady>(_manager); _bus.Subscribe( CallbackSubscriber.Create <ProjectionManagementMessage.Starting>( starting => _queue.Publish(new ProjectionManagementMessage.ReaderReady()))); _bus.Subscribe <PartitionProcessingResultBase>(_managerMessageDispatcher); _bus.Subscribe <CoreProjectionManagementControlMessage>(_managerMessageDispatcher); _bus.Subscribe <PartitionProcessingResultOutputBase>(_managerMessageDispatcher); _bus.Subscribe <ClientMessage.ReadStreamEventsForwardCompleted>(ioDispatcher.ForwardReader); _bus.Subscribe <ClientMessage.ReadStreamEventsBackwardCompleted>(ioDispatcher.BackwardReader); _bus.Subscribe <ClientMessage.WriteEventsCompleted>(ioDispatcher.Writer); _bus.Subscribe <ClientMessage.DeleteStreamCompleted>(ioDispatcher.StreamDeleter); _bus.Subscribe <IODispatcherDelayedMessage>(ioDispatcher.Awaker); _bus.Subscribe <IODispatcherDelayedMessage>(ioDispatcher); AwakeService = new AwakeService(); _bus.Subscribe <StorageMessage.EventCommitted>(AwakeService); _bus.Subscribe <StorageMessage.TfEofAtNonCommitRecord>(AwakeService); _bus.Subscribe <AwakeServiceMessage.SubscribeAwake>(AwakeService); _bus.Subscribe <AwakeServiceMessage.UnsubscribeAwake>(AwakeService); Given(); WhenLoop(); }
public void Setup() { //TODO: this became an integration test - proper ProjectionCoreService and ProjectionManager testing is required as well _bus.Subscribe(_consumer); var queues = GivenCoreQueues(); _managerMessageDispatcher = new ProjectionManagerMessageDispatcher(queues); _manager = new ProjectionManager( GetInputQueue(), GetInputQueue(), queues, _timeProvider, ProjectionType.All, _initializeSystemProjections); IPublisher inputQueue = GetInputQueue(); IPublisher publisher = GetInputQueue(); var ioDispatcher = new IODispatcher(publisher, new PublishEnvelope(inputQueue)); _bus.Subscribe<ProjectionManagementMessage.Internal.CleanupExpired>(_manager); _bus.Subscribe<ProjectionManagementMessage.Internal.Deleted>(_manager); _bus.Subscribe<CoreProjectionStatusMessage.Started>(_manager); _bus.Subscribe<CoreProjectionStatusMessage.Stopped>(_manager); _bus.Subscribe<CoreProjectionStatusMessage.Prepared>(_manager); _bus.Subscribe<CoreProjectionStatusMessage.Faulted>(_manager); _bus.Subscribe<CoreProjectionStatusMessage.StateReport>(_manager); _bus.Subscribe<CoreProjectionStatusMessage.ResultReport>(_manager); _bus.Subscribe<CoreProjectionStatusMessage.StatisticsReport>(_manager); _bus.Subscribe<CoreProjectionManagementMessage.SlaveProjectionReaderAssigned>(_manager); _bus.Subscribe<CoreProjectionStatusMessage.ProjectionWorkerStarted>(_manager); _bus.Subscribe<ProjectionManagementMessage.Command.Post>(_manager); _bus.Subscribe<ProjectionManagementMessage.Command.UpdateQuery>(_manager); _bus.Subscribe<ProjectionManagementMessage.Command.GetQuery>(_manager); _bus.Subscribe<ProjectionManagementMessage.Command.Delete>(_manager); _bus.Subscribe<ProjectionManagementMessage.Command.GetStatistics>(_manager); _bus.Subscribe<ProjectionManagementMessage.Command.GetState>(_manager); _bus.Subscribe<ProjectionManagementMessage.Command.GetResult>(_manager); _bus.Subscribe<ProjectionManagementMessage.Command.Disable>(_manager); _bus.Subscribe<ProjectionManagementMessage.Command.Enable>(_manager); _bus.Subscribe<ProjectionManagementMessage.Command.Abort>(_manager); _bus.Subscribe<ProjectionManagementMessage.Command.SetRunAs>(_manager); _bus.Subscribe<ProjectionManagementMessage.Command.Reset>(_manager); _bus.Subscribe<ProjectionManagementMessage.Command.StartSlaveProjections>(_manager); _bus.Subscribe<ClientMessage.WriteEventsCompleted>(_manager); _bus.Subscribe<ClientMessage.ReadStreamEventsBackwardCompleted>(_manager); _bus.Subscribe<ClientMessage.WriteEventsCompleted>(_manager); _bus.Subscribe<SystemMessage.StateChangeMessage>(_manager); _bus.Subscribe<ProjectionManagementMessage.ReaderReady>(_manager); _bus.Subscribe( CallbackSubscriber.Create<ProjectionManagementMessage.Starting>( starting => _queue.Publish(new ProjectionManagementMessage.ReaderReady()))); _bus.Subscribe<PartitionProcessingResultBase>(_managerMessageDispatcher); _bus.Subscribe<CoreProjectionManagementControlMessage>(_managerMessageDispatcher); _bus.Subscribe<PartitionProcessingResultOutputBase>(_managerMessageDispatcher); _bus.Subscribe<ClientMessage.ReadStreamEventsForwardCompleted>(ioDispatcher.ForwardReader); _bus.Subscribe<ClientMessage.ReadStreamEventsBackwardCompleted>(ioDispatcher.BackwardReader); _bus.Subscribe<ClientMessage.WriteEventsCompleted>(ioDispatcher.Writer); _bus.Subscribe<ClientMessage.DeleteStreamCompleted>(ioDispatcher.StreamDeleter); _bus.Subscribe<IODispatcherDelayedMessage>(ioDispatcher.Awaker); _bus.Subscribe<IODispatcherDelayedMessage>(ioDispatcher); AwakeService = new AwakeService(); _bus.Subscribe<StorageMessage.EventCommitted>(AwakeService); _bus.Subscribe<StorageMessage.TfEofAtNonCommitRecord>(AwakeService); _bus.Subscribe<AwakeServiceMessage.SubscribeAwake>(AwakeService); _bus.Subscribe<AwakeServiceMessage.UnsubscribeAwake>(AwakeService); Given(); WhenLoop(); }
public void Setup() { //TODO: this became an integration test - proper ProjectionCoreService and ProjectionManager testing is required as well _bus.Subscribe(_consumer); _processingQueues = GivenProcessingQueues(); var queues = _processingQueues.ToDictionary(v => v.Item5, v => (IPublisher)v.Item1); _managerMessageDispatcher = new ProjectionManagerMessageDispatcher(queues); _manager = new ProjectionManager( GetInputQueue(), GetInputQueue(), queues, _timeProvider, ProjectionType.All, _initializeSystemProjections); _coordinator = new ProjectionCoreCoordinator( ProjectionType.All, ProjectionCoreWorkersNode.CreateTimeoutSchedulers(queues.Count), queues.Values.ToArray(), _bus, Envelope); _bus.Subscribe <ProjectionManagementMessage.Internal.CleanupExpired>(_manager); _bus.Subscribe <ProjectionManagementMessage.Internal.Deleted>(_manager); _bus.Subscribe <CoreProjectionStatusMessage.Started>(_manager); _bus.Subscribe <CoreProjectionStatusMessage.Stopped>(_manager); _bus.Subscribe <CoreProjectionStatusMessage.Prepared>(_manager); _bus.Subscribe <CoreProjectionStatusMessage.Faulted>(_manager); _bus.Subscribe <CoreProjectionStatusMessage.StateReport>(_manager); _bus.Subscribe <CoreProjectionStatusMessage.ResultReport>(_manager); _bus.Subscribe <CoreProjectionStatusMessage.StatisticsReport>(_manager); _bus.Subscribe <CoreProjectionManagementMessage.SlaveProjectionReaderAssigned>(_manager); _bus.Subscribe <CoreProjectionStatusMessage.ProjectionWorkerStarted>(_manager); _bus.Subscribe <ProjectionManagementMessage.Command.Post>(_manager); _bus.Subscribe <ProjectionManagementMessage.Command.UpdateQuery>(_manager); _bus.Subscribe <ProjectionManagementMessage.Command.GetQuery>(_manager); _bus.Subscribe <ProjectionManagementMessage.Command.Delete>(_manager); _bus.Subscribe <ProjectionManagementMessage.Command.GetStatistics>(_manager); _bus.Subscribe <ProjectionManagementMessage.Command.GetState>(_manager); _bus.Subscribe <ProjectionManagementMessage.Command.GetResult>(_manager); _bus.Subscribe <ProjectionManagementMessage.Command.Disable>(_manager); _bus.Subscribe <ProjectionManagementMessage.Command.Enable>(_manager); _bus.Subscribe <ProjectionManagementMessage.Command.Abort>(_manager); _bus.Subscribe <ProjectionManagementMessage.Command.SetRunAs>(_manager); _bus.Subscribe <ProjectionManagementMessage.Command.Reset>(_manager); _bus.Subscribe <ProjectionManagementMessage.Command.StartSlaveProjections>(_manager); _bus.Subscribe <ClientMessage.WriteEventsCompleted>(_manager); _bus.Subscribe <ClientMessage.ReadStreamEventsBackwardCompleted>(_manager); _bus.Subscribe <SystemMessage.StateChangeMessage>(_manager); _bus.Subscribe <SystemMessage.SystemCoreReady>(_manager); _bus.Subscribe <ProjectionManagementMessage.ReaderReady>(_manager); _bus.Subscribe( CallbackSubscriber.Create <ProjectionManagementMessage.Starting>( starting => _queue.Publish(new ProjectionManagementMessage.ReaderReady()))); _bus.Subscribe <SystemMessage.StateChangeMessage>(_coordinator); _bus.Subscribe <SystemMessage.SystemCoreReady>(_coordinator); if (GetInputQueue() != _processingQueues.First().Item2) { _bus.Subscribe <PartitionProcessingResultBase>(_managerMessageDispatcher); _bus.Subscribe <CoreProjectionManagementControlMessage>( _managerMessageDispatcher); _bus.Subscribe <PartitionProcessingResultOutputBase>(_managerMessageDispatcher); _bus.Subscribe <ReaderSubscriptionManagement.SpoolStreamReading>(_managerMessageDispatcher); } foreach (var q in _processingQueues) { SetUpCoreServices(q.Item5, q.Item1, q.Item2, q.Item3, q.Item4); } //Given(); WhenLoop(); }