private void runScenario(ExecutionToken executionToken, HandlerManager handlerManager, ScenarioToken scenario, boolean skipScenario) throws Exception {
executionListenerSupport.notifyScenarioStarted(executionToken, scenario);
log.info(String.format("Processing scenario: %s", scenario.getName()));
ChorusContext.destroy();
handlerManager.setCurrentScenario(scenario);
List<Object> handlerInstances = Collections.emptyList();
if ( ! skipScenario) {
handlerInstances = handlerManager.getOrCreateHandlersForScenario();
}
handlerManager.processStartOfScope(Scope.SCENARIO, handlerInstances);
StepInvokerProvider p = getStepInvokers(handlerInstances);
createTimeoutTasks(Thread.currentThread());
log.debug((skipScenario ? "Skipping" : "Running") + " scenario steps for Scenario " + scenario);
stepProcessor.runSteps(executionToken, p, scenario.getSteps(), stepCatalogue, skipScenario);
stopTimeoutTasks();
if ( ! scenario.isStartOrEndScenario() ) {
updateExecutionStats(executionToken, scenario);
}
handlerManager.processEndOfScope(Scope.SCENARIO, handlerInstances);
executionListenerSupport.notifyScenarioCompleted(executionToken, scenario);
}