}\r
\r
/** Gets the path of a project (root). */\r
- private static TreeSPath getProjectPath(Project project) {\r
- return (TreeSPath) project.getReference(REF_PROJECT_PATH);\r
- }\r
+// private static TreeSPath getProjectPath(Project project) {\r
+// return (TreeSPath) project.getReference(REF_PROJECT_PATH);\r
+// }\r
\r
/** Initializes the Spring application context. */\r
private void initSpringContext(Project project) {\r
\r
import org.apache.tools.ant.Task;\r
\r
+import org.argeo.slc.ant.SlcExecutionBuildListener;\r
import org.argeo.slc.ant.SlcProjectHelper;\r
+import org.argeo.slc.core.process.SlcExecution;\r
\r
/** Abstract Ant task providing access to a Spring context. */\r
public abstract class AbstractSpringTask extends Task {\r
SlcProjectHelper.REF_ROOT_CONTEXT);\r
}\r
\r
+ /** Gets the related slc execution or null if not is registered. */\r
+ protected SlcExecution getSlcExecution() {\r
+ return (SlcExecution) getProject().getReference(\r
+ SlcExecutionBuildListener.REF_SLC_EXECUTION);\r
+ }\r
}\r
import org.argeo.slc.ant.spring.AbstractSpringArg;\r
import org.argeo.slc.ant.structure.SAwareTask;\r
import org.argeo.slc.core.deploy.DeployedSystem;\r
+import org.argeo.slc.core.process.SlcExecution;\r
+import org.argeo.slc.core.process.SlcExecutionAware;\r
import org.argeo.slc.core.structure.StructureAware;\r
import org.argeo.slc.core.structure.tree.TreeSPath;\r
import org.argeo.slc.core.test.ExecutableTestRun;\r
testRun.setTestResult(result);\r
}\r
\r
+ SlcExecution slcExecution = getSlcExecution();\r
+ if (result != null && slcExecution != null\r
+ && result instanceof SlcExecutionAware) {\r
+ ((SlcExecutionAware) result).notifySlcExecution(slcExecution);\r
+ }\r
+\r
if (result != null && result instanceof StructureAware) {\r
((StructureAware<TreeSPath>) result).notifyCurrentPath(\r
getRegistry(), getTreeSPath());\r
--- /dev/null
+package org.argeo.slc.core.process;\r
+\r
+public interface SlcExecutionAware {\r
+ public void notifySlcExecution(SlcExecution slcExecution);\r
+}\r
\r
private List<TestResultPart> parts = new Vector<TestResultPart>();\r
\r
+ private String slcExecutionUuid;\r
+ private String slcExecutionStepUuid;\r
+\r
/** Gets the result parts. */\r
public List<TestResultPart> getParts() {\r
return parts;\r
this.tid = tid;\r
}\r
\r
- public Boolean getIsPassed(){\r
- for(TestResultPart part: parts){\r
- if(part.getStatus()!=TestStatus.PASSED){\r
+ public String getSlcExecutionUuid() {\r
+ return slcExecutionUuid;\r
+ }\r
+\r
+ public void setSlcExecutionUuid(String slcExecutionUuid) {\r
+ this.slcExecutionUuid = slcExecutionUuid;\r
+ }\r
+\r
+ public String getSlcExecutionStepUuid() {\r
+ return slcExecutionStepUuid;\r
+ }\r
+\r
+ public void setSlcExecutionStepUuid(String slcExecutionStepUuid) {\r
+ this.slcExecutionStepUuid = slcExecutionStepUuid;\r
+ }\r
+\r
+ public Boolean getIsPassed() {\r
+ for (TestResultPart part : parts) {\r
+ if (part.getStatus() != TestStatus.PASSED) {\r
return false;\r
}\r
}\r
import org.apache.commons.logging.LogFactory;\r
\r
import org.argeo.slc.core.SlcException;\r
+import org.argeo.slc.core.process.SlcExecution;\r
+import org.argeo.slc.core.process.SlcExecutionAware;\r
+import org.argeo.slc.core.process.SlcExecutionStep;\r
import org.argeo.slc.core.structure.StructureAware;\r
-import org.argeo.slc.core.structure.StructurePath;\r
import org.argeo.slc.core.structure.StructureRegistry;\r
import org.argeo.slc.core.structure.tree.TreeSPath;\r
import org.argeo.slc.core.test.NumericTRId;\r
* Complex implementation of a test result compatible with a tree based\r
* structure.\r
*/\r
-public class TreeTestResult implements TestResult, StructureAware {\r
+public class TreeTestResult implements TestResult, StructureAware<TreeSPath>, SlcExecutionAware {\r
private Log log = LogFactory.getLog(TreeTestResult.class);\r
/** For ORM */\r
private Long tid;\r
private List<TestResultListener> listeners = new Vector<TestResultListener>();\r
\r
private TreeSPath currentPath;\r
+ private String currentSlcExecutionUuid;\r
+ private String currentSlcExecutionStepUuid;\r
\r
private Date closeDate;\r
\r
private boolean isClosed = false;\r
\r
private SortedMap<TreeSPath, PartSubList> resultParts = new TreeMap<TreeSPath, PartSubList>();\r
+ private SortedMap<TreeSPath, String> pathNames = new TreeMap<TreeSPath, String>();\r
\r
- private StructureRegistry registry;\r
+ private StructureRegistry<TreeSPath> registry;\r
\r
public TestResultId getTestResultId() {\r
return testResultId;\r
PartSubList subList = resultParts.get(currentPath);\r
if (subList == null) {\r
subList = new PartSubList();\r
+ subList.setSlcExecutionUuid(currentSlcExecutionUuid);\r
+ subList.setSlcExecutionStepUuid(currentSlcExecutionStepUuid);\r
resultParts.put(currentPath, subList);\r
}\r
subList.getParts().add(part);\r
}\r
}\r
\r
- public void notifyCurrentPath(StructureRegistry registry, StructurePath path) {\r
+ public void notifyCurrentPath(StructureRegistry<TreeSPath> registry, TreeSPath path) {\r
currentPath = (TreeSPath) path;\r
this.registry = registry;\r
}\r
}\r
\r
/** Gets the related registry (can be null). */\r
- public StructureRegistry getRegistry() {\r
+ public StructureRegistry<TreeSPath> getRegistry() {\r
return registry;\r
}\r
\r
/** Sets the related registry. */\r
- public void setRegistry(StructureRegistry registry) {\r
- this.registry = registry;\r
- }\r
+// public void setRegistry(StructureRegistry<TreeSPath> registry) {\r
+// this.registry = registry;\r
+// }\r
\r
public Date getCloseDate() {\r
return closeDate;\r
this.closeDate = closeDate;\r
}\r
\r
+ public void notifySlcExecution(SlcExecution slcExecution) {\r
+ currentSlcExecutionUuid = slcExecution.getUuid();\r
+ SlcExecutionStep step = slcExecution.currentStep();\r
+ if(step!=null){\r
+ currentSlcExecutionStepUuid = step.getUuid();\r
+ }\r
+ }\r
+\r
}\r
\r
PartSubList subList = (PartSubList) result.getResultParts().get(\r
path);\r
+ buf.append("Related SLC execution:").append(\r
+ subList.getSlcExecutionUuid()).append("<br/>\n");\r
+ buf.append("Related SLC execution step:").append(\r
+ subList.getSlcExecutionUuid()).append("<br/>\n");\r
buf.append("<table border=0>\n");\r
int displayedIndex = 1;// for display only\r
for (TestResultPart part : subList.getParts()) {\r
<id name="tid" column="T_ID">\r
<generator class="native" />\r
</id>\r
+ <property name="slcExecutionUuid" column="SLC_EXEC_UUID" />\r
+ <property name="slcExecutionStepUuid"\r
+ column="SLC_EXEC_STEP_UUID" />\r
<list name="parts" cascade="all" lazy="false">\r
<key column="PART_SUBLIST_ID" />\r
<list-index column="INDX" />\r
import java.util.Date;\r
import java.util.List;\r
\r
+import org.argeo.slc.core.process.SlcExecution;\r
+import org.argeo.slc.core.process.SlcExecutionStep;\r
+import org.argeo.slc.core.process.SlcExecutionTestUtils;\r
import org.argeo.slc.core.structure.tree.TreeSPath;\r
import org.argeo.slc.core.test.NumericTRId;\r
import org.argeo.slc.core.test.SimpleResultPart;\r
TreeSPathDao treeSPathDao = (TreeSPathDao) getContext().getBean(\r
"treeSPathDao");\r
\r
- TreeTestResultDao testResultDao = (TreeTestResultDao) getContext().getBean(\r
- "testResultDao");\r
+ TreeTestResultDao testResultDao = (TreeTestResultDao) getContext()\r
+ .getBean("testResultDao");\r
+\r
+ // SLC Execution\r
+ SlcExecution slcExecution = SlcExecutionTestUtils\r
+ .createSimpleSlcExecution();\r
+ SlcExecutionStep step = new SlcExecutionStep("LOG", "JUnit step");\r
+ slcExecution.getSteps().add(step);\r
\r
String pathParentStr = "/root/testParent";\r
String pathStr = pathParentStr + "/test";\r
treeSPathDao.create(path);\r
\r
TreeTestResult treeTestResult = new TreeTestResult();\r
+ treeTestResult.notifySlcExecution(slcExecution);\r
SimpleResultPart partPassed = new SimpleResultPart();\r
String msgPassed = "message";\r
partPassed.setStatus(TestStatus.PASSED);\r
\r
testResultDao.create(treeTestResult);\r
\r
- TreeTestResult treeTestResult2 = (TreeTestResult) testResultDao\r
+ TreeTestResult ttrPersisted = (TreeTestResult) testResultDao\r
.getTestResult(trId);\r
- PartSubList list = treeTestResult2.getResultParts().get(path);\r
+ PartSubList slPersisted = ttrPersisted.getResultParts().get(path);\r
+ assertEquals(slcExecution.getUuid(), slPersisted.getSlcExecutionUuid());\r
+ assertEquals(step.getUuid(), slPersisted.getSlcExecutionStepUuid());\r
\r
- assertEquals(2, list.getParts().size());\r
- SimpleResultPart part0 = (SimpleResultPart) list.getParts().get(0);\r
+ assertEquals(2, slPersisted.getParts().size());\r
+ SimpleResultPart part0 = (SimpleResultPart) slPersisted.getParts().get(\r
+ 0);\r
assertEquals(TestStatus.PASSED, part0.getStatus());\r
assertEquals(msgPassed, part0.getMessage());\r
\r
- SimpleResultPart part1 = (SimpleResultPart) list.getParts().get(1);\r
+ SimpleResultPart part1 = (SimpleResultPart) slPersisted.getParts().get(\r
+ 1);\r
assertEquals(TestStatus.FAILED, part1.getStatus());\r
assertEquals(msgFailed, part1.getMessage());\r
\r
- assertEquals(closeDate, treeTestResult2.getCloseDate());\r
- \r
+ assertEquals(closeDate, ttrPersisted.getCloseDate());\r
+\r
List<TreeTestResult> results = testResultDao.listResults(path);\r
assertEquals(1, results.size());\r
assertEquals(trId, results.get(0).getTestResultId());\r
- \r
+\r
}\r
\r
@Override\r