Add Slc execution notification to results
authorMathieu Baudier <mbaudier@argeo.org>
Fri, 25 Apr 2008 07:11:08 +0000 (07:11 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Fri, 25 Apr 2008 07:11:08 +0000 (07:11 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@1070 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

org.argeo.slc.core/src/main/java/org/argeo/slc/ant/SlcProjectHelper.java
org.argeo.slc.core/src/main/java/org/argeo/slc/ant/spring/AbstractSpringTask.java
org.argeo.slc.core/src/main/java/org/argeo/slc/ant/test/SlcTestTask.java
org.argeo.slc.core/src/main/java/org/argeo/slc/core/process/SlcExecutionAware.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/PartSubList.java
org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/TreeTestResult.java
org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/htmlreport/ResultPage.java
org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/test/tree/PartSubList.hbm.xml
org.argeo.slc.core/src/test/java/org/argeo/slc/hibernate/test/tree/TreeTestResultDaoHibernateTest.java

index 994cb3a6f412fec71c9708acd7390f84fda87110..c222d5ff78671fa58fb8e92a39da9f0acd4797e9 100644 (file)
@@ -168,9 +168,9 @@ public class SlcProjectHelper extends ProjectHelper2 {
        }\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
index 3e8cc8b1366df06133f3ac80514ec3784c8493a0..925140fa5b0888834f24df99bfc31626e53f35c3 100644 (file)
@@ -4,7 +4,9 @@ import org.springframework.context.ApplicationContext;
 \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
@@ -15,4 +17,9 @@ public abstract class AbstractSpringTask extends Task {
                                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
index dff1b981e1e9e92e45ba5fb87350c4a43b9f6ee6..f0326175be126663a19d096684d53748696d4689 100644 (file)
@@ -8,6 +8,8 @@ import org.argeo.slc.ant.SlcAntConfig;
 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
@@ -96,6 +98,12 @@ public class SlcTestTask extends SAwareTask {
                        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
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 (file)
index 0000000..089dc31
--- /dev/null
@@ -0,0 +1,5 @@
+package org.argeo.slc.core.process;\r
+\r
+public interface SlcExecutionAware {\r
+       public void notifySlcExecution(SlcExecution slcExecution);\r
+}\r
index 71843e41c8c5883b42e4f7c33686cdd656637704..138392bddd366fd91b45ec00ed219346cb2ba641 100644 (file)
@@ -21,6 +21,9 @@ public class PartSubList {
 \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
@@ -39,9 +42,25 @@ public class PartSubList {
                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
index 3124b055fcb3339c3aff75c241faa58cd6dfcd91..3ce0c99b5a6408d324a990c048c1df93f3366357 100644 (file)
@@ -10,8 +10,10 @@ import org.apache.commons.logging.Log;
 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
@@ -24,7 +26,7 @@ import org.argeo.slc.core.test.TestResultPart;
  * 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
@@ -33,14 +35,17 @@ public class TreeTestResult implements TestResult, StructureAware {
        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
@@ -71,6 +76,8 @@ public class TreeTestResult implements TestResult, StructureAware {
                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
@@ -83,7 +90,7 @@ public class TreeTestResult implements TestResult, StructureAware {
                }\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
@@ -130,14 +137,14 @@ public class TreeTestResult implements TestResult, StructureAware {
        }\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
@@ -148,4 +155,12 @@ public class TreeTestResult implements TestResult, StructureAware {
                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
index 1ee32e479b438149196c86e46a77b52fcb3d70a3..e805714f9ffcc5d2cf8440e3af3432badb52d648 100644 (file)
@@ -138,6 +138,10 @@ class ResultPage {
 \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
index f9740fe109d0358286a50c98332f8848f9ee9be6..6a9759c5492ca59126fcb664effb1daa542acea1 100644 (file)
@@ -7,6 +7,9 @@
                <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
index 86ae6bbea8c7365706c5d53bb95f1ab058bba920..24e4d823c852f18f8abad05e942c8a019bd6b741 100644 (file)
@@ -3,6 +3,9 @@ package org.argeo.slc.hibernate.test.tree;
 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
@@ -20,8 +23,14 @@ public class TreeTestResultDaoHibernateTest extends AbstractSpringTestCase {
                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
@@ -29,6 +38,7 @@ public class TreeTestResultDaoHibernateTest extends AbstractSpringTestCase {
                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
@@ -51,25 +61,29 @@ public class TreeTestResultDaoHibernateTest extends AbstractSpringTestCase {
 \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