package org.argeo.slc.core.test;
import java.util.UUID;
import org.argeo.slc.core.structure.tree.TreeSPath;
import org.argeo.slc.core.structure.tree.TreeSRegistry;
import org.argeo.slc.deploy.DeployedSystem;
import org.argeo.slc.process.SlcExecution;
import org.argeo.slc.process.SlcExecutionRelated;
import org.argeo.slc.process.SlcExecutionStep;
import org.argeo.slc.structure.StructureAware;
import org.argeo.slc.structure.StructureRegistry;
import org.argeo.slc.test.ExecutableTestRun;
import org.argeo.slc.test.TestData;
import org.argeo.slc.test.TestDefinition;
import org.argeo.slc.test.TestResult;
import org.argeo.slc.test.WritableTestRun;
/**
* A basic bean implementation of a WritableTestRun
, holding
* references to the various parts of a test run.
*/
public class SimpleTestRun implements WritableTestRun, ExecutableTestRun,
SlcExecutionRelated {
private String uuid;
private String slcExecutionUuid;
private String slcExecutionStepUuid;
private String path;
private DeployedSystem deployedSystem;
private TestData testData;
private TestDefinition testDefinition;
private TestResult testResult;
/** Executes the underlying test definition. */
public void execute() {
TreeSPath basePath = null;
StructureRegistry registry = null;
if (path != null) {
// TODO: generalize
basePath = new TreeSPath(path);
registry = new TreeSRegistry();
}
uuid = UUID.randomUUID().toString();
if (testResult != null)
testResult.notifyTestRun(this);
// Structure
if (testResult != null && basePath != null
&& testResult instanceof StructureAware)
((StructureAware) testResult).notifyCurrentPath(
registry, basePath);
if (basePath != null && testDefinition instanceof StructureAware)
((StructureAware) testDefinition).notifyCurrentPath(
registry, basePath);
testDefinition.execute(this);
}
public T getDeployedSystem() {
return (T) deployedSystem;
}
public void setDeployedSystem(DeployedSystem deployedSystem) {
this.deployedSystem = deployedSystem;
}
public T getTestData() {
return (T) testData;
}
public void setTestData(TestData testData) {
this.testData = testData;
}
public T getTestDefinition() {
return (T) testDefinition;
}
public void setTestDefinition(TestDefinition testDefinition) {
this.testDefinition = testDefinition;
}
public T getTestResult() {
return (T) testResult;
}
public void setTestResult(TestResult testResult) {
this.testResult = testResult;
}
public String getUuid() {
return uuid;
}
public void setUuid(String uuid) {
this.uuid = uuid;
}
public String getSlcExecutionUuid() {
return slcExecutionUuid;
}
public void setSlcExecutionUuid(String slcExecutionUuid) {
this.slcExecutionUuid = slcExecutionUuid;
}
public String getSlcExecutionStepUuid() {
return slcExecutionStepUuid;
}
public void setSlcExecutionStepUuid(String slcExecutionStepUuid) {
this.slcExecutionStepUuid = slcExecutionStepUuid;
}
public void notifySlcExecution(SlcExecution slcExecution) {
if (slcExecution != null) {
slcExecutionUuid = slcExecution.getUuid();
SlcExecutionStep step = slcExecution.currentStep();
if (step != null) {
slcExecutionStepUuid = step.getUuid();
}
}
}
public void setPath(String path) {
this.path = path;
}
}