public ProjectionsSubsystem(ProjectionSubsystemOptions projectionSubsystemOptions)
        {
            if (projectionSubsystemOptions.RunProjections <= ProjectionType.System)
            {
                _projectionWorkerThreadCount = 1;
            }
            else
            {
                _projectionWorkerThreadCount = projectionSubsystemOptions.ProjectionWorkerThreadCount;
            }

            _runProjections = projectionSubsystemOptions.RunProjections;
            // Projection manager & Projection Core Coordinator
            // The manager only starts when projections are running
            _componentCount = _runProjections == ProjectionType.None ? 1 : 2;

            // Projection manager & each projection core worker
            _dispatcherCount = 1 + _projectionWorkerThreadCount;

            _startStandardProjections   = projectionSubsystemOptions.StartStandardProjections;
            _projectionsQueryExpiry     = projectionSubsystemOptions.ProjectionQueryExpiry;
            _faultOutOfOrderProjections = projectionSubsystemOptions.FaultOutOfOrderProjections;

            _leaderMainBus        = new InMemoryBus("manager input bus");
            _subsystemInitialized = 0;
            _executionTimeout     = projectionSubsystemOptions.ExecutionTimeout;
            _compilationTimeout   = projectionSubsystemOptions.CompilationTimeout;
        }
Exemple #2
0
        public override async Task TestFixtureSetUp()
        {
            await base.TestFixtureSetUp();

#if (!DEBUG)
            Assert.Ignore("These tests require DEBUG conditional");
#else
            var projectionWorkerThreadCount = GivenWorkerThreadCount();
            var configuration = new ProjectionSubsystemOptions(
                projectionWorkerThreadCount,
                ProjectionType.All,
                false,
                TimeSpan.FromMinutes(Opts.ProjectionsQueryExpiryDefault),
                Opts.FaultOutOfOrderProjectionsDefault,
                500,
                250);
            _projections = new ProjectionsSubsystem(configuration);
            _node        = new MiniNode <TLogFormat, TStreamId>(
                PathName, inMemDb: true,
                subsystems: new ISubsystem[] { _projections });
            _projectionsCreated = SystemProjections.Created(_projections.LeaderMainBus);

            await _node.Start();

            _conn = EventStoreConnection.Create(new ConnectionSettingsBuilder()
                                                .DisableServerCertificateValidation()
                                                .Build(), _node.TcpEndPoint);
            await _conn.ConnectAsync();

            _manager = new ProjectionsManager(
                new ConsoleLogger(),
                _node.HttpEndPoint,
                TimeSpan.FromMilliseconds(20000),
                _node.HttpMessageHandler);

            _queryManager = new QueryManager(
                new ConsoleLogger(),
                _node.HttpEndPoint,
                TimeSpan.FromMilliseconds(20000),
                TimeSpan.FromMilliseconds(20000),
                _node.HttpMessageHandler);

            WaitIdle();

            if (GivenStandardProjectionsRunning())
            {
                await EnableStandardProjections();
            }

            WaitIdle();
            try {
                await Given().WithTimeout(TimeSpan.FromSeconds(10));
            } catch (Exception ex) {
                throw new Exception("Given Failed", ex);
            }

            try {
                await When().WithTimeout(TimeSpan.FromSeconds(10));
            } catch (Exception ex) {
                throw new Exception("When Failed", ex);
            }
#endif
        }