Esempio n. 1
0
        public EngineAgent(int port, ISystem system) : this(port)
        {
            _running = RunningSystem.Create(system);


            _disposables.Add(system);
        }
Esempio n. 2
0
        private void buildRunningSystem()
        {
            var systemType = _project.DetermineSystemType();
            var inner      = Activator.CreateInstance(systemType).As <ISystem>();

            _running = RunningSystem.Create(inner);

            _disposables.Add(_running.System);
        }
        public SpecificationEngine(ISystem system, ISpecRunner runner, IExecutionObserver observer)
        {
            if (system == null)
            {
                throw new ArgumentNullException(nameof(system));
            }
            if (runner == null)
            {
                throw new ArgumentNullException(nameof(runner));
            }
            if (observer == null)
            {
                throw new ArgumentNullException(nameof(observer));
            }


            _running = RunningSystem.Create(system);
            _runner  = runner;

            _executionQueue = new ConsumingQueue(request =>
            {
                if (request.IsCancelled)
                {
                    return;
                }

                _warmup.Wait(30.Seconds());

                var results = _runner.Execute(request, _executionQueue);

                if (!request.IsCancelled && results != null)
                {
                    // TODO -- combine the two things here?
                    request.SpecExecutionFinished(results);
                    observer.SpecFinished(request);
                }
            });

            var warmup = _running.System.Warmup();

            if (warmup == null)
            {
                throw new InvalidOperationException(
                          $"{system} cannot return a null value from {nameof(ISystem.Warmup)}()");
            }



            _warmup = warmup.ContinueWith(t =>
            {
                if (t.IsFaulted)
                {
                    _runner.MarkAsInvalid(t.Exception);
                }
            });
        }
Esempio n. 4
0
        public EngineAgent(int port, ISystem system)
        {
            if (system == null)
            {
                throw new ArgumentNullException(nameof(system));
            }

            _socket = new SocketConnection(port, false, (s, json) =>
            {
                EventAggregator.Messaging.SendJson(json);
            });

            _disposables.Add(_socket);

            EventAggregator.Start(_socket);

            _running = RunningSystem.Create(system);

            _disposables.Add(system);
        }