Esempio n. 1
0
 public void SpecStarted(SpecExecutionRequest request)
 {
     if (Controller != null)
     {
         Controller.SendQueueState();
     }
 }
 public SpecExecution(SpecExecutionRequest request, StopConditions stopConditions, IExecutionLogger logger)
 {
     Request        = request;
     StopConditions = stopConditions;
     Logger         = logger;
     Mode           = request.Mode;
 }
        public StepthroughExecutor(IExecutionContext execution, SpecExecutionRequest request, IUserInterfaceObserver observer)
        {
            _context = new SpecContext(request.Specification, new Timings(), request.Observer, new StopConditions(), execution);

            _execution = execution;
            _request = request;
            _observer = observer;
            var gatherer = new ExecutionStepGatherer(_context);
            _request.Plan.AcceptVisitor(gatherer);

            _steps = gatherer.Lines;


            try
            {
                _execution.BeforeExecution(_context);
            }
            catch (Exception e)
            {
                _context.LogException(_request.Id, e, "BeforeExecution");
            }

            _observer.SendProgress(new SpecProgress(_request.Id, _context.Counts, 0, _steps.Count));
            sendNextStepMessage();
        }
Esempio n. 4
0
 public SpecExecution(SpecExecutionRequest request, StopConditions stopConditions, IExecutionLogger logger)
 {
     Request = request;
     StopConditions = stopConditions;
     Logger = logger;
     Mode = request.Mode;
 }
Esempio n. 5
0
 public ExecutionRun(ISystem system, Timings timings, SpecExecutionRequest request, StopConditions stopConditions, IExecutionMode mode)
 {
     _system = system;
     _timings = timings;
     _request = request;
     _stopConditions = stopConditions;
     _mode = mode;
 }
Esempio n. 6
0
 public ExecutionRun(ISystem system, Timings timings, SpecExecutionRequest request, StopConditions stopConditions, IExecutionMode mode)
 {
     _system         = system;
     _timings        = timings;
     _request        = request;
     _stopConditions = stopConditions;
     _mode           = mode;
 }
        public void SendQueueState(SpecExecutionRequest request = null)
        {
            lock (_locker)
            {
                var state = QueueState(request);

                _observer.SendToClient(state);
            }
        }
        // TODO -- if an error bubbles up, the SpecificationEngine should mark its runner
        //         as Invalid
        public static StepthroughExecutor Start(ISystem system, Specification specification, IResultObserver observer, IUserInterfaceObserver uiObserver, FixtureLibrary library)
        {
            var request = new SpecExecutionRequest(specification, observer);
            request.CreatePlan(library);

            // Got to watch because this can error out
            var execution = system.CreateContext();

            return new StepthroughExecutor(execution, request, uiObserver);
        }
Esempio n. 9
0
 public void Enqueue(SpecExecutionRequest request)
 {
     if (request.Specification.SpecType == SpecType.header)
     {
         _reader.Enqueue(request);
     }
     else
     {
         _planning.Enqueue(request);
     }
 }
Esempio n. 10
0
        public virtual void RunSpec(string id, Specification specification)
        {
            if (OutstandingRequests().Any(x => x.Specification.id == id))
            {
                return;
            }

            var request = new SpecExecutionRequest(specification, this);

            _outstanding.Add(request);

            _engine.Enqueue(request);
        }
        public QueueState QueueState(SpecExecutionRequest request = null)
        {
            var running = _runner.RunningState();

            if (request != null)
            {
                running.running = request.Id;
                running.Mode    = request.Mode;
            }

            running.queued = _outstanding
                             .Where(x => x.Specification.id != running.running)
                             .Select(x => x.Specification.id).ToArray();

            return(running);
        }
Esempio n. 12
0
        public SpecResults Execute(SpecExecutionRequest request, IConsumingQueue queue)
        {
            _mode.BeforeRunning(request);
            if (Status == SpecRunnerStatus.Invalid)
            {
                var abortedResults = SpecResults.ForAbortedRun(request.Id);
                _mode.AfterRunning(request, abortedResults, queue, Status);
                return(abortedResults);
            }
            if (_specExpiration.IsExpired(request.Specification))
            {
                var expiredResults = SpecResults.ForExpiredRun(request.Id);
                _mode.AfterRunning(request, expiredResults, queue, Status);
                return(expiredResults);
            }

            request.Plan.Attempts++;

            var timings = request.StartNewTimings();

            SpecResults results = null;

            try
            {
                _current = new ExecutionRun(_system, timings, request, _stopConditions, _mode);
                results  = _current.Execute();
            }
            catch (Exception ex) // Any exception that bubbles up is telling us that the runner is invalid
            {
                MarkAsInvalid(ex);

                results = buildResultsForContextCreationFailure(request, ex, timings);
            }
            finally
            {
                _mode.AfterRunning(request, results, queue, Status);

                timings.Dispose();
                if (_current != null)
                {
                    _current.SafeDispose();
                }
            }

            return(results);
        }
Esempio n. 13
0
        public SpecResults Execute(SpecExecutionRequest request, IConsumingQueue queue)
        {
            _mode.BeforeRunning(request);

            if (Status == SpecRunnerStatus.Invalid)
            {
                var abortedResults = SpecResults.ForAbortedRun(request.Id);
                _mode.AfterRunning(request, abortedResults, queue, Status);

                return(abortedResults);
            }

            request.Plan.Attempts++;

            var timings = request.StartNewTimings();

            SpecResults results = null;

            try
            {
                Current = request.Mode == ExecutionMode.normal
                    ? new SpecExecution(request, _stopConditions, _mode.BuildLogger())
                    : new StepthroughExecution(request, _stopConditions, _mode.Observer(), _observer);

                _observer.SpecStarted(request);

                results = Current.Execute(_system, timings);
            }
            catch (Exception ex) // Any exception that bubbles up is telling us that the runner is invalid
            {
                MarkAsInvalid(ex);

                results = buildResultsForContextCreationFailure(request, ex, timings);
            }
            finally
            {
                _mode.AfterRunning(request, results, queue, Status);

                timings.Dispose();
            }

            return(results);
        }
Esempio n. 14
0
        public SpecResults Execute(SpecExecutionRequest request, IConsumingQueue queue)
        {
            _mode.BeforeRunning(request);
            if (Status == SpecRunnerStatus.Invalid)
            {
                var abortedResults = SpecResults.ForAbortedRun(request.Id);
                _mode.AfterRunning(request, abortedResults, queue, Status);
                return abortedResults;
            }
            if (_specExpiration.IsExpired(request.Specification))
            {
                var expiredResults = SpecResults.ForExpiredRun(request.Id);
                _mode.AfterRunning(request, expiredResults, queue, Status);
                return expiredResults;
            }

            request.Plan.Attempts++;

            var timings = request.StartNewTimings();

            SpecResults results = null;

            try
            {
                _current = new ExecutionRun(_system, timings, request, _stopConditions, _mode);
                results = _current.Execute();
            }
            catch (Exception ex) // Any exception that bubbles up is telling us that the runner is invalid
            {
                MarkAsInvalid(ex);

                results = buildResultsForContextCreationFailure(request, ex, timings);
            }
            finally
            {
                _mode.AfterRunning(request, results, queue, Status);

                timings.Dispose();
                if (_current != null) _current.SafeDispose();
            }

            return results;
        }
Esempio n. 15
0
        public SpecResults Execute(SpecExecutionRequest request, IConsumingQueue queue)
        {
            _mode.BeforeRunning(request);

            if (Status == SpecRunnerStatus.Invalid)
            {
                var abortedResults = SpecResults.ForAbortedRun(request.Id);
                _mode.AfterRunning(request, abortedResults, queue, Status);

                return abortedResults;
            }

            request.Plan.Attempts++;

            var timings = request.StartNewTimings();

            SpecResults results = null;

            try
            {
                Current = request.Mode == ExecutionMode.normal
                    ? new SpecExecution(request, _stopConditions, _mode.BuildLogger())
                    : new StepthroughExecution(request, _stopConditions, _mode.Observer(), _observer);

                _observer.SpecStarted(request);

                results = Current.Execute(_system, timings);
            }
            catch (Exception ex) // Any exception that bubbles up is telling us that the runner is invalid
            {
                MarkAsInvalid(ex);

                results = buildResultsForContextCreationFailure(request, ex, timings);
            }
            finally
            {
                _mode.AfterRunning(request, results, queue, Status);

                timings.Dispose();
            }

            return results;
        }
Esempio n. 16
0
        private static SpecResults buildResultsForContextCreationFailure(SpecExecutionRequest request, Exception ex,
                                                                         Timings timings)
        {
            var result = new StepResult(request.Specification.id, ex)
            {
                position = Stage.context
            };
            var perf = timings.Finish();

            return(new SpecResults
            {
                Attempts = request.Plan.Attempts,
                Duration = timings.Duration,
                Performance = perf.ToArray(),
                Counts = new Counts(0, 0, 1, 0),
                Results = new IResultMessage[]
                {
                    result
                }
            });
        }
Esempio n. 17
0
        private static SpecResults buildResultsForContextCreationFailure(SpecExecutionRequest request, Exception ex,
            Timings timings)
        {
            var result = new StepResult(request.Specification.id, ex) {position = Stage.context};
            var perf = timings.Finish();

            return new SpecResults
            {
                Attempts = request.Plan.Attempts,
                Duration = timings.Duration,
                Performance = perf.ToArray(),
                Counts = new Counts(0, 0, 1, 0),
                Results = new IResultMessage[]
                {
                    result
                }
            };
        }
 protected bool Equals(SpecExecutionRequest other)
 {
     return Equals(Specification.id, other.Specification.id);
 }
Esempio n. 19
0
 public void Enqueue(SpecExecutionRequest plan)
 {
     _collection.Add(plan);
 }
 public void SpecFinished(SpecExecutionRequest request)
 {
     // nothing
 }
Esempio n. 21
0
 public void SpecFinished(SpecExecutionRequest request)
 {
     Console.WriteLine("##teamcity[testFinished name='{0}']", request.Specification.name.Escape());
 }
Esempio n. 22
0
 public void SpecFinished(SpecExecutionRequest request)
 {
     // nothing
 }
Esempio n. 23
0
 public void SpecStarted(SpecExecutionRequest request)
 {
     Controller?.SendQueueState(request);
 }
 public void SpecStarted(SpecExecutionRequest request)
 {
 }
Esempio n. 25
0
 public void Enqueue(SpecExecutionRequest plan)
 {
     _collection.Add(plan);
 }
 public void SpecStarted(SpecExecutionRequest request)
 {
     if (Controller != null) Controller.SendQueueState();
 }
 protected bool Equals(SpecExecutionRequest other)
 {
     return(Equals(Specification.id, other.Specification.id));
 }
Esempio n. 28
0
 public void Enqueue(SpecExecutionRequest request)
 {
     if (request.Specification.SpecType == SpecType.header)
     {
         _reader.Enqueue(request);
     }
     else
     {
         _planning.Enqueue(request);
     }
 }
Esempio n. 29
0
 public void SpecStarted(SpecExecutionRequest request)
 {
     Controller?.SendQueueState();
 }
 public void Enqueue(SpecExecutionRequest request)
 {
     _planning.Enqueue(request);
 }
 public void SpecStarted(SpecExecutionRequest request)
 {
     Console.WriteLine("##teamcity[testStarted name='{0}']", request.Specification.name.Escape());
 }
Esempio n. 32
0
 public void Enqueue(SpecExecutionRequest request)
 {
     _planning.Enqueue(request);
 }
Esempio n. 33
0
 public void SpecStarted(SpecExecutionRequest request)
 {
 }