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