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(); }
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); }
public void Enqueue(SpecExecutionRequest request) { if (request.Specification.SpecType == SpecType.header) { _reader.Enqueue(request); } else { _planning.Enqueue(request); } }
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); }
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); }
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); }
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; }
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; }
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 } }); }
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); }
public void Enqueue(SpecExecutionRequest plan) { _collection.Add(plan); }
public void SpecFinished(SpecExecutionRequest request) { // nothing }
public void SpecFinished(SpecExecutionRequest request) { Console.WriteLine("##teamcity[testFinished name='{0}']", request.Specification.name.Escape()); }
public void SpecStarted(SpecExecutionRequest request) { Controller?.SendQueueState(request); }
public void SpecStarted(SpecExecutionRequest request) { }
public void SpecStarted(SpecExecutionRequest request) { if (Controller != null) Controller.SendQueueState(); }
protected bool Equals(SpecExecutionRequest other) { return(Equals(Specification.id, other.Specification.id)); }
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()); }