/*
* Copyright 2017 Nokia Solutions and Networks
* Licensed under the Apache License, Version 2.0,
* see license.txt file for details.
*/
package org.robotframework.ide.eclipse.main.plugin.views.execution;
import java.io.File;
import org.rf.ide.core.execution.ExecutionElement;
import org.rf.ide.core.execution.ExecutionElementsFactory;
import org.rf.ide.core.execution.RobotDefaultAgentEventListener;
import org.rf.ide.core.execution.Status;
import org.robotframework.ide.eclipse.main.plugin.launch.RobotTestExecutionService.RobotTestsLaunch;
public class ExecutionElementsTracker extends RobotDefaultAgentEventListener {
private final RobotTestsLaunch testsLaunchContext;
public ExecutionElementsTracker(final RobotTestsLaunch testsLaunchContext) {
this.testsLaunchContext = testsLaunchContext;
}
@Override
public void handleAgentInitializing() {
testsLaunchContext.getExecutionData(ExecutionElementsStore.class, ExecutionElementsStore::new);
}
@Override
public void handleOutputFile(final File outputFilepath) {
addExecutionElement(ExecutionElementsFactory.createOutputFileExecutionElement(outputFilepath));
}
@Override
public void handleSuiteStarted(final String suiteName, final File suiteFilePath) {
addExecutionElement(ExecutionElementsFactory.createStartSuiteExecutionElement(suiteName, suiteFilePath));
}
@Override
public void handleSuiteEnded(final String suiteName, final int elapsedTime, final Status status,
final String errorMessage) {
addExecutionElement(
ExecutionElementsFactory.createEndSuiteExecutionElement(suiteName, elapsedTime, errorMessage, status));
}
@Override
public void handleTestStarted(final String testCaseName, final String testCaseLongName) {
addExecutionElement(ExecutionElementsFactory.createStartTestExecutionElement(testCaseName));
}
@Override
public void handleTestEnded(final String testCaseName, final String testCaseLongName, final int elapsedTime,
final Status status, final String errorMessage) {
addExecutionElement(ExecutionElementsFactory.createEndTestExecutionElement(testCaseName, elapsedTime,
errorMessage, status));
}
private void addExecutionElement(final ExecutionElement element) {
testsLaunchContext.performOnExecutionData(ExecutionElementsStore.class, store -> store.addElement(element));
}
}