From: Mathieu Baudier Date: Fri, 25 Apr 2008 07:11:08 +0000 (+0000) Subject: Add Slc execution notification to results X-Git-Tag: argeo-slc-2.1.7~2970 X-Git-Url: http://git.argeo.org/?a=commitdiff_plain;h=4be456f18c71bf293632d365d790a2ef32728157;p=gpl%2Fargeo-slc.git Add Slc execution notification to results git-svn-id: https://svn.argeo.org/slc/trunk@1070 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/SlcProjectHelper.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/SlcProjectHelper.java index 994cb3a6f..c222d5ff7 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/SlcProjectHelper.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/SlcProjectHelper.java @@ -168,9 +168,9 @@ public class SlcProjectHelper extends ProjectHelper2 { } /** Gets the path of a project (root). */ - private static TreeSPath getProjectPath(Project project) { - return (TreeSPath) project.getReference(REF_PROJECT_PATH); - } +// private static TreeSPath getProjectPath(Project project) { +// return (TreeSPath) project.getReference(REF_PROJECT_PATH); +// } /** Initializes the Spring application context. */ private void initSpringContext(Project project) { diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/spring/AbstractSpringTask.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/spring/AbstractSpringTask.java index 3e8cc8b13..925140fa5 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/spring/AbstractSpringTask.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/spring/AbstractSpringTask.java @@ -4,7 +4,9 @@ import org.springframework.context.ApplicationContext; import org.apache.tools.ant.Task; +import org.argeo.slc.ant.SlcExecutionBuildListener; import org.argeo.slc.ant.SlcProjectHelper; +import org.argeo.slc.core.process.SlcExecution; /** Abstract Ant task providing access to a Spring context. */ public abstract class AbstractSpringTask extends Task { @@ -15,4 +17,9 @@ public abstract class AbstractSpringTask extends Task { SlcProjectHelper.REF_ROOT_CONTEXT); } + /** Gets the related slc execution or null if not is registered. */ + protected SlcExecution getSlcExecution() { + return (SlcExecution) getProject().getReference( + SlcExecutionBuildListener.REF_SLC_EXECUTION); + } } diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/test/SlcTestTask.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/test/SlcTestTask.java index dff1b981e..f0326175b 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/test/SlcTestTask.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/ant/test/SlcTestTask.java @@ -8,6 +8,8 @@ import org.argeo.slc.ant.SlcAntConfig; import org.argeo.slc.ant.spring.AbstractSpringArg; import org.argeo.slc.ant.structure.SAwareTask; import org.argeo.slc.core.deploy.DeployedSystem; +import org.argeo.slc.core.process.SlcExecution; +import org.argeo.slc.core.process.SlcExecutionAware; import org.argeo.slc.core.structure.StructureAware; import org.argeo.slc.core.structure.tree.TreeSPath; import org.argeo.slc.core.test.ExecutableTestRun; @@ -96,6 +98,12 @@ public class SlcTestTask extends SAwareTask { testRun.setTestResult(result); } + SlcExecution slcExecution = getSlcExecution(); + if (result != null && slcExecution != null + && result instanceof SlcExecutionAware) { + ((SlcExecutionAware) result).notifySlcExecution(slcExecution); + } + if (result != null && result instanceof StructureAware) { ((StructureAware) result).notifyCurrentPath( getRegistry(), getTreeSPath()); diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/process/SlcExecutionAware.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/process/SlcExecutionAware.java new file mode 100644 index 000000000..089dc317e --- /dev/null +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/process/SlcExecutionAware.java @@ -0,0 +1,5 @@ +package org.argeo.slc.core.process; + +public interface SlcExecutionAware { + public void notifySlcExecution(SlcExecution slcExecution); +} diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/PartSubList.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/PartSubList.java index 71843e41c..138392bdd 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/PartSubList.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/PartSubList.java @@ -21,6 +21,9 @@ public class PartSubList { private List parts = new Vector(); + private String slcExecutionUuid; + private String slcExecutionStepUuid; + /** Gets the result parts. */ public List getParts() { return parts; @@ -39,9 +42,25 @@ public class PartSubList { this.tid = tid; } - public Boolean getIsPassed(){ - for(TestResultPart part: parts){ - if(part.getStatus()!=TestStatus.PASSED){ + 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 Boolean getIsPassed() { + for (TestResultPart part : parts) { + if (part.getStatus() != TestStatus.PASSED) { return false; } } diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/TreeTestResult.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/TreeTestResult.java index 3124b055f..3ce0c99b5 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/TreeTestResult.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/TreeTestResult.java @@ -10,8 +10,10 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.argeo.slc.core.SlcException; +import org.argeo.slc.core.process.SlcExecution; +import org.argeo.slc.core.process.SlcExecutionAware; +import org.argeo.slc.core.process.SlcExecutionStep; import org.argeo.slc.core.structure.StructureAware; -import org.argeo.slc.core.structure.StructurePath; import org.argeo.slc.core.structure.StructureRegistry; import org.argeo.slc.core.structure.tree.TreeSPath; import org.argeo.slc.core.test.NumericTRId; @@ -24,7 +26,7 @@ import org.argeo.slc.core.test.TestResultPart; * Complex implementation of a test result compatible with a tree based * structure. */ -public class TreeTestResult implements TestResult, StructureAware { +public class TreeTestResult implements TestResult, StructureAware, SlcExecutionAware { private Log log = LogFactory.getLog(TreeTestResult.class); /** For ORM */ private Long tid; @@ -33,14 +35,17 @@ public class TreeTestResult implements TestResult, StructureAware { private List listeners = new Vector(); private TreeSPath currentPath; + private String currentSlcExecutionUuid; + private String currentSlcExecutionStepUuid; private Date closeDate; private boolean isClosed = false; private SortedMap resultParts = new TreeMap(); + private SortedMap pathNames = new TreeMap(); - private StructureRegistry registry; + private StructureRegistry registry; public TestResultId getTestResultId() { return testResultId; @@ -71,6 +76,8 @@ public class TreeTestResult implements TestResult, StructureAware { PartSubList subList = resultParts.get(currentPath); if (subList == null) { subList = new PartSubList(); + subList.setSlcExecutionUuid(currentSlcExecutionUuid); + subList.setSlcExecutionStepUuid(currentSlcExecutionStepUuid); resultParts.put(currentPath, subList); } subList.getParts().add(part); @@ -83,7 +90,7 @@ public class TreeTestResult implements TestResult, StructureAware { } } - public void notifyCurrentPath(StructureRegistry registry, StructurePath path) { + public void notifyCurrentPath(StructureRegistry registry, TreeSPath path) { currentPath = (TreeSPath) path; this.registry = registry; } @@ -130,14 +137,14 @@ public class TreeTestResult implements TestResult, StructureAware { } /** Gets the related registry (can be null). */ - public StructureRegistry getRegistry() { + public StructureRegistry getRegistry() { return registry; } /** Sets the related registry. */ - public void setRegistry(StructureRegistry registry) { - this.registry = registry; - } +// public void setRegistry(StructureRegistry registry) { +// this.registry = registry; +// } public Date getCloseDate() { return closeDate; @@ -148,4 +155,12 @@ public class TreeTestResult implements TestResult, StructureAware { this.closeDate = closeDate; } + public void notifySlcExecution(SlcExecution slcExecution) { + currentSlcExecutionUuid = slcExecution.getUuid(); + SlcExecutionStep step = slcExecution.currentStep(); + if(step!=null){ + currentSlcExecutionStepUuid = step.getUuid(); + } + } + } diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/htmlreport/ResultPage.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/htmlreport/ResultPage.java index 1ee32e479..e805714f9 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/htmlreport/ResultPage.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/htmlreport/ResultPage.java @@ -138,6 +138,10 @@ class ResultPage { PartSubList subList = (PartSubList) result.getResultParts().get( path); + buf.append("Related SLC execution:").append( + subList.getSlcExecutionUuid()).append("
\n"); + buf.append("Related SLC execution step:").append( + subList.getSlcExecutionUuid()).append("
\n"); buf.append("\n"); int displayedIndex = 1;// for display only for (TestResultPart part : subList.getParts()) { diff --git a/org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/test/tree/PartSubList.hbm.xml b/org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/test/tree/PartSubList.hbm.xml index f9740fe10..6a9759c54 100644 --- a/org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/test/tree/PartSubList.hbm.xml +++ b/org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/test/tree/PartSubList.hbm.xml @@ -7,6 +7,9 @@ + + diff --git a/org.argeo.slc.core/src/test/java/org/argeo/slc/hibernate/test/tree/TreeTestResultDaoHibernateTest.java b/org.argeo.slc.core/src/test/java/org/argeo/slc/hibernate/test/tree/TreeTestResultDaoHibernateTest.java index 86ae6bbea..24e4d823c 100644 --- a/org.argeo.slc.core/src/test/java/org/argeo/slc/hibernate/test/tree/TreeTestResultDaoHibernateTest.java +++ b/org.argeo.slc.core/src/test/java/org/argeo/slc/hibernate/test/tree/TreeTestResultDaoHibernateTest.java @@ -3,6 +3,9 @@ package org.argeo.slc.hibernate.test.tree; import java.util.Date; import java.util.List; +import org.argeo.slc.core.process.SlcExecution; +import org.argeo.slc.core.process.SlcExecutionStep; +import org.argeo.slc.core.process.SlcExecutionTestUtils; import org.argeo.slc.core.structure.tree.TreeSPath; import org.argeo.slc.core.test.NumericTRId; import org.argeo.slc.core.test.SimpleResultPart; @@ -20,8 +23,14 @@ public class TreeTestResultDaoHibernateTest extends AbstractSpringTestCase { TreeSPathDao treeSPathDao = (TreeSPathDao) getContext().getBean( "treeSPathDao"); - TreeTestResultDao testResultDao = (TreeTestResultDao) getContext().getBean( - "testResultDao"); + TreeTestResultDao testResultDao = (TreeTestResultDao) getContext() + .getBean("testResultDao"); + + // SLC Execution + SlcExecution slcExecution = SlcExecutionTestUtils + .createSimpleSlcExecution(); + SlcExecutionStep step = new SlcExecutionStep("LOG", "JUnit step"); + slcExecution.getSteps().add(step); String pathParentStr = "/root/testParent"; String pathStr = pathParentStr + "/test"; @@ -29,6 +38,7 @@ public class TreeTestResultDaoHibernateTest extends AbstractSpringTestCase { treeSPathDao.create(path); TreeTestResult treeTestResult = new TreeTestResult(); + treeTestResult.notifySlcExecution(slcExecution); SimpleResultPart partPassed = new SimpleResultPart(); String msgPassed = "message"; partPassed.setStatus(TestStatus.PASSED); @@ -51,25 +61,29 @@ public class TreeTestResultDaoHibernateTest extends AbstractSpringTestCase { testResultDao.create(treeTestResult); - TreeTestResult treeTestResult2 = (TreeTestResult) testResultDao + TreeTestResult ttrPersisted = (TreeTestResult) testResultDao .getTestResult(trId); - PartSubList list = treeTestResult2.getResultParts().get(path); + PartSubList slPersisted = ttrPersisted.getResultParts().get(path); + assertEquals(slcExecution.getUuid(), slPersisted.getSlcExecutionUuid()); + assertEquals(step.getUuid(), slPersisted.getSlcExecutionStepUuid()); - assertEquals(2, list.getParts().size()); - SimpleResultPart part0 = (SimpleResultPart) list.getParts().get(0); + assertEquals(2, slPersisted.getParts().size()); + SimpleResultPart part0 = (SimpleResultPart) slPersisted.getParts().get( + 0); assertEquals(TestStatus.PASSED, part0.getStatus()); assertEquals(msgPassed, part0.getMessage()); - SimpleResultPart part1 = (SimpleResultPart) list.getParts().get(1); + SimpleResultPart part1 = (SimpleResultPart) slPersisted.getParts().get( + 1); assertEquals(TestStatus.FAILED, part1.getStatus()); assertEquals(msgFailed, part1.getMessage()); - assertEquals(closeDate, treeTestResult2.getCloseDate()); - + assertEquals(closeDate, ttrPersisted.getCloseDate()); + List results = testResultDao.listResults(path); assertEquals(1, results.size()); assertEquals(trId, results.get(0).getTestResultId()); - + } @Override