From 62e442adb36b006627b17061864dfa4edde0a99a Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Thu, 1 May 2008 19:53:42 +0000 Subject: [PATCH] Various changes git-svn-id: https://svn.argeo.org/slc/trunk@1089 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../org/argeo/slc/ant/test/SlcTestTask.java | 5 +- .../argeo/slc/core/build/Distribution.java | 2 +- .../argeo/slc/core/build/DistributionId.java | 3 +- .../argeo/slc/core/deploy/DeployedSystem.java | 5 +- .../slc/core/deploy/DeployedSystemId.java | 3 +- .../slc/core/structure/tree/TreeSPath.java | 2 +- .../argeo/slc/core/test/SimpleResultPart.java | 74 ++++++++++-- .../argeo/slc/core/test/SimpleTestResult.java | 38 ++++-- .../argeo/slc/core/test/SimpleTestRun.java | 49 +++++++- .../org/argeo/slc/core/test/TestResult.java | 4 +- .../argeo/slc/core/test/TestResultPart.java | 6 +- .../java/org/argeo/slc/core/test/TestRun.java | 6 +- .../org/argeo/slc/core/test/TestRunAware.java | 7 ++ .../slc/core/test/TestRunDescriptor.java | 72 ++++++++++++ .../argeo/slc/core/test/tree/PartSubList.java | 19 --- .../slc/core/test/tree/TreeTestResult.java | 41 ++++--- .../core/test/tree/TreeTestResultLogger.java | 4 +- .../core/test/tree/htmlreport/ResultPage.java | 31 ++--- ....java => CreateTreeTestResultRequest.java} | 2 +- .../slc/msg/test/tree/ResultPartRequest.java | 74 ++++++++++++ .../slc/msg/test/tree/ResultPartsRequest.java | 38 ------ .../org/argeo/slc/spring/SpringUtils.java | 6 +- .../slc/unit/AbstractSpringTestCase.java | 12 +- .../slc/unit/test/tree/UnitTestTreeUtil.java | 50 ++++---- .../org/argeo/slc/castor/mapping.xml | 41 +++++++ .../org/argeo/slc/castor/msg/mapping.xml | 64 +++++++++++ .../org/argeo/slc/castor/process/mapping.xml | 38 +++--- .../slc/castor/spring/applicationContext.xml | 2 +- .../argeo/slc/castor/structure/mapping.xml | 35 ++++++ .../slc/castor/test/{tree => }/mapping.xml | 108 ++++++++++-------- .../hibernate/test/SimpleResultPart.hbm.xml | 8 +- .../hibernate/test/tree/PartSubList.hbm.xml | 4 - .../test/tree/TreeTestResult.hbm.xml | 5 - .../main/resources/org/argeo/slc/xml/slc.xsd | 55 +++++++-- .../test/tree/TreeTestResultCastorTest.java | 40 ++++++- .../test/tree/TreeTestResultTestUtils.java | 23 +++- .../tree/TreeTestResultWsIntegrationTest.java | 4 +- 37 files changed, 726 insertions(+), 254 deletions(-) create mode 100644 org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestRunAware.java create mode 100644 org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestRunDescriptor.java rename org.argeo.slc.core/src/main/java/org/argeo/slc/msg/test/tree/{TreeTestResultRequest.java => CreateTreeTestResultRequest.java} (84%) create mode 100644 org.argeo.slc.core/src/main/java/org/argeo/slc/msg/test/tree/ResultPartRequest.java delete mode 100644 org.argeo.slc.core/src/main/java/org/argeo/slc/msg/test/tree/ResultPartsRequest.java create mode 100644 org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/mapping.xml create mode 100644 org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/msg/mapping.xml create mode 100644 org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/structure/mapping.xml rename org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/test/{tree => }/mapping.xml (65%) 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 f0326175b..3acfc5e0f 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 @@ -99,10 +99,7 @@ public class SlcTestTask extends SAwareTask { } SlcExecution slcExecution = getSlcExecution(); - if (result != null && slcExecution != null - && result instanceof SlcExecutionAware) { - ((SlcExecutionAware) result).notifySlcExecution(slcExecution); - } + testRun.notifySlcExecution(slcExecution); if (result != null && result instanceof StructureAware) { ((StructureAware) result).notifyCurrentPath( diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/build/Distribution.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/build/Distribution.java index fb9c09188..a9ada27f0 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/build/Distribution.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/build/Distribution.java @@ -1,6 +1,6 @@ package org.argeo.slc.core.build; public interface Distribution { - public DistributionId getDistributionId(); + public String getDistributionId(); } diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/build/DistributionId.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/build/DistributionId.java index 926247925..c253a679b 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/build/DistributionId.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/build/DistributionId.java @@ -1,6 +1,7 @@ package org.argeo.slc.core.build; -/** The id uniquely identifying the distribution of a software system. */ +/** The id uniquely identifying the distribution of a software system. + * @deprecated*/ public interface DistributionId { } diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/DeployedSystem.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/DeployedSystem.java index ccec874f9..2fabf5606 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/DeployedSystem.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/DeployedSystem.java @@ -1,6 +1,9 @@ package org.argeo.slc.core.deploy; +import org.argeo.slc.core.build.Distribution; + /** An instance of a software system. */ public interface DeployedSystem { - public DeployedSystemId getDeployedSystemId(); + public String getDeployedSystemId(); + public Distribution getDistribution(); } diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/DeployedSystemId.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/DeployedSystemId.java index 43f5f6ac5..ea4d19250 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/DeployedSystemId.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/deploy/DeployedSystemId.java @@ -2,7 +2,8 @@ package org.argeo.slc.core.deploy; import org.argeo.slc.core.build.DistributionId; -/** The id uniquely identifying a deployed system. */ +/** The id uniquely identifying a deployed system. + * @deprecated*/ public interface DeployedSystemId { public DistributionId getDistributionId(); } diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/tree/TreeSPath.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/tree/TreeSPath.java index 9c9eb54c8..f02fbda5d 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/tree/TreeSPath.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/tree/TreeSPath.java @@ -40,7 +40,7 @@ public class TreeSPath implements StructurePath, Comparable { * ORM/OXM frameworks. Use constructor to create immutable tree structure * paths. */ - void setAsUniqueString(String str) { + public void setAsUniqueString(String str) { this.asUniqueString = str; } diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/SimpleResultPart.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/SimpleResultPart.java index da0ddcbeb..543cc98bb 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/SimpleResultPart.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/SimpleResultPart.java @@ -1,5 +1,14 @@ package org.argeo.slc.core.test; +import java.io.IOException; +import java.io.PrintWriter; +import java.io.StringReader; +import java.io.StringWriter; +import java.util.List; +import java.util.Vector; + +import org.apache.commons.io.IOUtils; + /** *

* Basic implementation of a result part, implementing the standard three status @@ -8,15 +17,19 @@ package org.argeo.slc.core.test; * * @see TestStatus */ -public class SimpleResultPart implements TestResultPart, TestStatus { +public class SimpleResultPart implements TestResultPart, TestStatus, + TestRunAware { - /** For ORM */ + /** @deprecated */ private Long tid; + private String testRunUuid; + /** The status. Default to ERROR since it should always be explicitely set. */ private Integer status = ERROR; private String message; - private Exception exception; + private String exceptionMessage; + private List exceptionStackLines = new Vector(); public SimpleResultPart() { } @@ -28,7 +41,7 @@ public class SimpleResultPart implements TestResultPart, TestStatus { public SimpleResultPart(Integer status, String message, Exception exception) { this.status = status; this.message = message; - this.exception = exception; + setException(exception); } public String getMessage() { @@ -47,12 +60,29 @@ public class SimpleResultPart implements TestResultPart, TestStatus { return status; } - public Exception getException() { - return exception; + public String getExceptionMessage() { + return exceptionMessage; } public void setException(Exception exception) { - this.exception = exception; + if (exception == null) + return; + + this.exceptionMessage = exception.getMessage(); + + StringWriter writer = null; + StringReader reader = null; + try { + writer = new StringWriter(); + exception.printStackTrace(new PrintWriter(writer)); + reader = new StringReader(writer.toString()); + exceptionStackLines = new Vector(IOUtils.readLines(reader)); + } catch (IOException e) { + // silent + } finally { + IOUtils.closeQuietly(writer); + IOUtils.closeQuietly(reader); + } } @Override @@ -65,18 +95,42 @@ public class SimpleResultPart implements TestResultPart, TestStatus { buf.append(" "); } buf.append(message); - if (exception != null) { - buf.append("(").append(exception.getMessage()).append(")"); - } return buf.toString(); } + /** @deprecated */ Long getTid() { return tid; } + /** @deprecated */ void setTid(Long tid) { this.tid = tid; } + public String getTestRunUuid() { + return testRunUuid; + } + + /** For ORM */ + public void setTestRunUuid(String testRunUuid) { + this.testRunUuid = testRunUuid; + } + + public void notifyTestRun(TestRun testRun) { + testRunUuid = testRun.getUuid(); + } + + public List getExceptionStackLines() { + return exceptionStackLines; + } + + public void setExceptionStackLines(List exceptionStackLines) { + this.exceptionStackLines = exceptionStackLines; + } + + public void setExceptionMessage(String exceptionMessage) { + this.exceptionMessage = exceptionMessage; + } + } diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/SimpleTestResult.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/SimpleTestResult.java index a89ffe737..c1d783a77 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/SimpleTestResult.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/SimpleTestResult.java @@ -2,6 +2,7 @@ package org.argeo.slc.core.test; import java.util.Date; import java.util.List; +import java.util.UUID; import java.util.Vector; import org.apache.commons.logging.Log; @@ -15,16 +16,19 @@ import org.argeo.slc.core.SlcException; public class SimpleTestResult implements TestResult { private static Log log = LogFactory.getLog(SimpleTestResult.class); + private String uuid; + private String currentTestRunUuid; + private Boolean throwError = true; - private TestResultId testResultId; private Date closeDate; private List parts = new Vector(); public void addResultPart(TestResultPart part) { if (throwError && part.getStatus() == ERROR) { - throw new SlcException("There was an error in the underlying test", - part.getException()); + throw new SlcException( + "There was an error in the underlying test: " + + part.getExceptionMessage()); } parts.add(part); if (log.isDebugEnabled()) @@ -36,15 +40,6 @@ public class SimpleTestResult implements TestResult { closeDate = new Date(); } - public TestResultId getTestResultId() { - return testResultId; - } - - /** Sets the test result id. */ - public void setTestResultId(TestResultId testResultId) { - this.testResultId = testResultId; - } - public List getParts() { return parts; } @@ -57,4 +52,23 @@ public class SimpleTestResult implements TestResult { this.throwError = throwError; } + public void notifyTestRun(TestRun testRun) { + currentTestRunUuid = testRun.getUuid(); + } + + public String getUuid() { + if (uuid == null) { + uuid = UUID.randomUUID().toString(); + } + return uuid; + } + + public void setUuid(String uuid) { + this.uuid = uuid; + } + + public String getCurrentTestRunUuid() { + return currentTestRunUuid; + } + } diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/SimpleTestRun.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/SimpleTestRun.java index 684142e96..388e1f2dc 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/SimpleTestRun.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/SimpleTestRun.java @@ -1,12 +1,19 @@ package org.argeo.slc.core.test; import org.argeo.slc.core.deploy.DeployedSystem; +import org.argeo.slc.core.process.SlcExecution; +import org.argeo.slc.core.process.SlcExecutionStep; /** * A basic bean implementation of a WritableTestRun, holding * references to the various parts of a test run. */ public class SimpleTestRun implements WritableTestRun, ExecutableTestRun { + private String uuid; + + private String slcExecutionUuid; + private String slcExecutionStepUuid; + private DeployedSystem deployedSystem; private TestData testData; private TestDefinition testDefinition; @@ -14,11 +21,13 @@ public class SimpleTestRun implements WritableTestRun, ExecutableTestRun { /** Executes the underlying test definition. */ public void execute() { + if (testResult != null) + testResult.notifyTestRun(this); testDefinition.execute(this); } public T getDeployedSystem() { - return (T)deployedSystem; + return (T) deployedSystem; } public void setDeployedSystem(DeployedSystem deployedSystem) { @@ -26,7 +35,7 @@ public class SimpleTestRun implements WritableTestRun, ExecutableTestRun { } public T getTestData() { - return (T)testData; + return (T) testData; } public void setTestData(TestData testData) { @@ -34,7 +43,7 @@ public class SimpleTestRun implements WritableTestRun, ExecutableTestRun { } public T getTestDefinition() { - return (T)testDefinition; + return (T) testDefinition; } public void setTestDefinition(TestDefinition testDefinition) { @@ -42,11 +51,43 @@ public class SimpleTestRun implements WritableTestRun, ExecutableTestRun { } public T getTestResult() { - return (T)testResult; + 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) { + slcExecutionUuid = slcExecution.getUuid(); + SlcExecutionStep step = slcExecution.currentStep(); + if (step != null) { + slcExecutionStepUuid = step.getUuid(); + } + } + } diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestResult.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestResult.java index f4dde542a..5aa1c6193 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestResult.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestResult.java @@ -3,7 +3,9 @@ package org.argeo.slc.core.test; import java.util.Date; /** The result of a test */ -public interface TestResult extends TestStatus { +public interface TestResult extends TestStatus, TestRunAware { + public String getUuid(); + /** Adds a part of the result. */ public void addResultPart(TestResultPart part); diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestResultPart.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestResultPart.java index 888641387..c299da334 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestResultPart.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestResultPart.java @@ -1,5 +1,7 @@ package org.argeo.slc.core.test; +import java.util.List; + /** * Part of a test result. * @@ -13,5 +15,7 @@ public interface TestResultPart { public String getMessage(); /** The underlying Exception. Can be null. */ - public Exception getException(); + public String getExceptionMessage(); + + public List getExceptionStackLines(); } diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestRun.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestRun.java index 9991e20c3..5a4ac50b6 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestRun.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestRun.java @@ -1,9 +1,13 @@ package org.argeo.slc.core.test; import org.argeo.slc.core.deploy.DeployedSystem; +import org.argeo.slc.core.process.SlcExecutionAware; /** The actual run of a test */ -public interface TestRun { +public interface TestRun extends SlcExecutionAware{ + /** Gets UUID */ + public String getUuid(); + /** Gets the related test definition. */ public T getTestDefinition(); diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestRunAware.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestRunAware.java new file mode 100644 index 000000000..6cca1440e --- /dev/null +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestRunAware.java @@ -0,0 +1,7 @@ +package org.argeo.slc.core.test; + +public interface TestRunAware { + /** Notifies the current test run. */ + public void notifyTestRun(TestRun testRun); + +} diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestRunDescriptor.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestRunDescriptor.java new file mode 100644 index 000000000..3e3d2bec5 --- /dev/null +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestRunDescriptor.java @@ -0,0 +1,72 @@ +package org.argeo.slc.core.test; + +import org.argeo.slc.core.deploy.DeployedSystem; + +public class TestRunDescriptor { + private String testRunUuid; + private String slcExecutionUuid; + private String slcExecutionStepUuid; + private String testResultUuid; + private String deployedSytemId; + + public TestRunDescriptor() { + + } + + public TestRunDescriptor(TestRun testRun) { + testRunUuid = testRun.getUuid(); + + if (testRun.getTestResult() != null) + testResultUuid = testRun.getTestResult().getUuid(); + + if (testRun.getDeployedSystem() != null) + deployedSytemId = testRun.getDeployedSystem().getDeployedSystemId(); + + if (testRun instanceof SimpleTestRun) { + slcExecutionUuid = ((SimpleTestRun) testRun).getSlcExecutionUuid(); + slcExecutionStepUuid = ((SimpleTestRun) testRun) + .getSlcExecutionStepUuid(); + } + } + + public String getTestRunUuid() { + return testRunUuid; + } + + public void setTestRunUuid(String testRunUuid) { + this.testRunUuid = testRunUuid; + } + + 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 String getTestResultUuid() { + return testResultUuid; + } + + public void setTestResultUuid(String testResultUuid) { + this.testResultUuid = testResultUuid; + } + + public String getDeployedSytemId() { + return deployedSytemId; + } + + public void setDeployedSytemId(String deploymentId) { + this.deployedSytemId = deploymentId; + } + +} 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 138392bdd..128da6abb 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,9 +21,6 @@ public class PartSubList { private List parts = new Vector(); - private String slcExecutionUuid; - private String slcExecutionStepUuid; - /** Gets the result parts. */ public List getParts() { return parts; @@ -42,22 +39,6 @@ public class PartSubList { this.tid = tid; } - 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) { 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 8da3e7d5a..9b807c904 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,9 +10,6 @@ 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.StructureElement; import org.argeo.slc.core.structure.StructureRegistry; @@ -20,20 +17,20 @@ import org.argeo.slc.core.structure.tree.TreeSPath; import org.argeo.slc.core.test.TestResult; import org.argeo.slc.core.test.TestResultListener; import org.argeo.slc.core.test.TestResultPart; +import org.argeo.slc.core.test.TestRun; +import org.argeo.slc.core.test.TestRunAware; /** * Complex implementation of a test result compatible with a tree based * structure. */ -public class TreeTestResult implements TestResult, StructureAware, - SlcExecutionAware { +public class TreeTestResult implements TestResult, StructureAware { private Log log = LogFactory.getLog(TreeTestResult.class); private List listeners = new Vector(); private TreeSPath currentPath; - private String currentSlcExecutionUuid; - private String currentSlcExecutionStepUuid; + private TestRun currentTestRun; private Date closeDate; @@ -56,10 +53,11 @@ 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); } + if (part instanceof TestRunAware && currentTestRun != null) { + ((TestRunAware) part).notifyTestRun(currentTestRun); + } subList.getParts().add(part); // notify listeners @@ -133,12 +131,8 @@ 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(); - } + public void notifyTestRun(TestRun testRun) { + currentTestRun = testRun; } public SortedMap getElements() { @@ -157,4 +151,21 @@ public class TreeTestResult implements TestResult, StructureAware, this.uuid = uuid; } + public SortedMap getRelatedElements( + TreeSPath path) { + SortedMap relatedElements = new TreeMap(); + List hierarchy = path.getHierarchyAsList(); + for (TreeSPath currPath : elements.keySet()) { + if (hierarchy.contains(currPath)) { + relatedElements.put(currPath, elements.get(currPath)); + } + } + return relatedElements; + } + + public TestRun getCurrentTestRun() { + return currentTestRun; + } + + } diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/TreeTestResultLogger.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/TreeTestResultLogger.java index 832d86554..a0736fdba 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/TreeTestResultLogger.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/TreeTestResultLogger.java @@ -16,7 +16,7 @@ import org.argeo.slc.core.test.TestStatus; public class TreeTestResultLogger extends AsynchronousTreeTestResultListener { private static Log log = LogFactory.getLog(TreeTestResultLogger.class); - + public TreeTestResultLogger() { super(true); } @@ -31,7 +31,7 @@ public class TreeTestResultLogger extends AsynchronousTreeTestResultListener { } else if (part.getStatus().equals(TestStatus.FAILED)) { log.warn(msg); } else if (part.getStatus().equals(TestStatus.ERROR)) { - log.error(msg, ((SimpleResultPart) part).getException()); + log.error(msg + ((SimpleResultPart) part).getExceptionMessage()); } else { log.error("Unknow test status: " + msg); } 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 31560541d..69bba492e 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 @@ -40,7 +40,7 @@ class ResultPage { * @param result * the result to dump */ - protected void generate(StructureRegistry registry) { + protected void generate(StructureRegistry registry) { StringBuffer buf = new StringBuffer(""); buf.append("\n"); buf.append("

"); @@ -53,8 +53,7 @@ class ResultPage { // Header buf.append("\n"); - buf.append("

Result #").append(result.getUuid()).append( - "

\n"); + buf.append("

Result #").append(result.getUuid()).append("

\n"); Date closeDate = result.getCloseDate(); if (closeDate == null) { buf.append("[Not closed]"); @@ -78,7 +77,8 @@ class ResultPage { } } - private void generateToc(StringBuffer buf, StructureRegistry registry) { + private void generateToc(StringBuffer buf, + StructureRegistry registry) { buf.append("

Overview

\n"); SortedMap toc = new TreeMap(); for (TreeSPath path : result.getResultParts().keySet()) { @@ -128,7 +128,8 @@ class ResultPage { buf.append("
\n"); } - private void generatePartsList(StringBuffer buf, StructureRegistry registry) { + private void generatePartsList(StringBuffer buf, + StructureRegistry registry) { for (TreeSPath path : result.getResultParts().keySet()) { buf.append("

\n"); buf.append(""); @@ -138,14 +139,12 @@ 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()) { SimpleResultPart sPart = (SimpleResultPart) part; + buf.append("Related Test Run Id:").append( + sPart.getTestRunUuid()).append("
\n"); String clss = ""; if (sPart.getStatus().equals(TestStatus.PASSED)) { clss = "passed"; @@ -161,15 +160,7 @@ class ResultPage { if (sPart.getStatus().equals(TestStatus.ERROR)) { buf .append("

An unexpected error prevented the test to run properly."); - Throwable exception = sPart.getException(); - if (exception != null) { - StringWriter writer = new StringWriter(); - exception.printStackTrace(new PrintWriter(writer)); - buf.append("

");
-						buf.append(writer.toString());
-						buf.append("
"); - IOUtils.closeQuietly(writer); - } + buf.append(sPart.getExceptionMessage()); buf.append("

"); } buf.append(""); @@ -202,8 +193,8 @@ class ResultPage { return path.getAsUniqueString().replace(path.getSeparator(), '_'); } - private void describedPath(TreeSPath path, StructureRegistry registry, - StringBuffer buf) { + private void describedPath(TreeSPath path, + StructureRegistry registry, StringBuffer buf) { // StringBuffer buf = new StringBuffer(""); if (path.getParent() != null) { describedPath(path.getParent(), registry, buf); diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/msg/test/tree/TreeTestResultRequest.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/msg/test/tree/CreateTreeTestResultRequest.java similarity index 84% rename from org.argeo.slc.core/src/main/java/org/argeo/slc/msg/test/tree/TreeTestResultRequest.java rename to org.argeo.slc.core/src/main/java/org/argeo/slc/msg/test/tree/CreateTreeTestResultRequest.java index c550541fd..156f3b364 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/msg/test/tree/TreeTestResultRequest.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/msg/test/tree/CreateTreeTestResultRequest.java @@ -2,7 +2,7 @@ package org.argeo.slc.msg.test.tree; import org.argeo.slc.core.test.tree.TreeTestResult; -public class TreeTestResultRequest { +public class CreateTreeTestResultRequest { private TreeTestResult treeTestResult; public TreeTestResult getTreeTestResult() { diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/msg/test/tree/ResultPartRequest.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/msg/test/tree/ResultPartRequest.java new file mode 100644 index 000000000..88f4f9f2c --- /dev/null +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/msg/test/tree/ResultPartRequest.java @@ -0,0 +1,74 @@ +package org.argeo.slc.msg.test.tree; + +import java.util.Map; + +import org.argeo.slc.core.structure.StructureElement; +import org.argeo.slc.core.structure.tree.TreeSPath; +import org.argeo.slc.core.test.SimpleResultPart; +import org.argeo.slc.core.test.TestResultPart; +import org.argeo.slc.core.test.TestRunDescriptor; +import org.argeo.slc.core.test.tree.TreeTestResult; + +public class ResultPartRequest { + private String resultUuid; + private TestResultPart resultPart; + private TreeSPath path; + private Map relatedElements; + private TestRunDescriptor testRunDescriptor; + + public ResultPartRequest() { + + } + + public ResultPartRequest(TreeTestResult ttr, TreeSPath path, + TestResultPart resultPart) { + resultUuid = ttr.getUuid(); + this.resultPart = resultPart; + this.path = path; + relatedElements = ttr.getRelatedElements(path); + if (ttr.getCurrentTestRun() != null) + testRunDescriptor = new TestRunDescriptor(ttr.getCurrentTestRun()); + } + + public String getResultUuid() { + return resultUuid; + } + + public void setResultUuid(String resultUuid) { + this.resultUuid = resultUuid; + } + + public TestResultPart getResultPart() { + return resultPart; + } + + public void setResultPart(TestResultPart resultPart) { + this.resultPart = resultPart; + } + + public TreeSPath getPath() { + return path; + } + + public void setPath(TreeSPath path) { + this.path = path; + } + + public TestRunDescriptor getTestRunDescriptor() { + return testRunDescriptor; + } + + public void setTestRunDescriptor(TestRunDescriptor testRunDescriptor) { + this.testRunDescriptor = testRunDescriptor; + } + + public Map getRelatedElements() { + return relatedElements; + } + + public void setRelatedElements( + Map relatedElements) { + this.relatedElements = relatedElements; + } + +} diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/msg/test/tree/ResultPartsRequest.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/msg/test/tree/ResultPartsRequest.java deleted file mode 100644 index 542620d3c..000000000 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/msg/test/tree/ResultPartsRequest.java +++ /dev/null @@ -1,38 +0,0 @@ -package org.argeo.slc.msg.test.tree; - -import java.util.Map; -import java.util.TreeMap; - -import org.argeo.slc.core.structure.StructureElement; -import org.argeo.slc.core.structure.tree.TreeSPath; -import org.argeo.slc.core.test.tree.PartSubList; - -public class ResultPartsRequest { - private String resultUuid; - private Map resultParts = new TreeMap(); - private Map elements = new TreeMap(); - - public String getResultUuid() { - return resultUuid; - } - - public void setResultUuid(String resultUuid) { - this.resultUuid = resultUuid; - } - - public Map getResultParts() { - return resultParts; - } - - public void setResultParts(Map resultParts) { - this.resultParts = resultParts; - } - - public Map getElements() { - return elements; - } - - public void setElements(Map elements) { - this.elements = elements; - } -} diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/spring/SpringUtils.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/spring/SpringUtils.java index 953d2ecaf..fc9b65686 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/spring/SpringUtils.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/spring/SpringUtils.java @@ -7,9 +7,9 @@ import org.springframework.beans.factory.ListableBeanFactory; public class SpringUtils { public static T loadSingleFromContext(ListableBeanFactory context, Class clss) { - Map listeners = context.getBeansOfType(clss); - if (listeners.size() == 1) { - return listeners.values().iterator().next(); + Map beans = context.getBeansOfType(clss); + if (beans.size() == 1) { + return beans.values().iterator().next(); } else { return null; } diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/unit/AbstractSpringTestCase.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/unit/AbstractSpringTestCase.java index f0af1086e..4ad916d57 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/unit/AbstractSpringTestCase.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/unit/AbstractSpringTestCase.java @@ -1,7 +1,5 @@ package org.argeo.slc.unit; -import java.util.Map; - import junit.framework.TestCase; import org.springframework.context.ApplicationContext; @@ -11,7 +9,7 @@ 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.spring.SpringUtils; /** Helper for tests using a Spring application co,text. */ public abstract class AbstractSpringTestCase extends TestCase { @@ -37,12 +35,12 @@ public abstract class AbstractSpringTestCase extends TestCase { } protected T getBean(Class clss) { - Map map = getContext().getBeansOfType(clss); - if (map.size() == 1) { - return map.values().iterator().next(); - } else { + T bean = SpringUtils.loadSingleFromContext(getContext(), clss); + if (bean == null) { throw new SlcException("Cannot retrieve a unique bean of type " + clss); + } else { + return bean; } } diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/unit/test/tree/UnitTestTreeUtil.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/unit/test/tree/UnitTestTreeUtil.java index 237811ebe..cecb57cbe 100644 --- a/org.argeo.slc.core/src/main/java/org/argeo/slc/unit/test/tree/UnitTestTreeUtil.java +++ b/org.argeo.slc.core/src/main/java/org/argeo/slc/unit/test/tree/UnitTestTreeUtil.java @@ -1,5 +1,7 @@ package org.argeo.slc.unit.test.tree; +import java.util.List; + import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertNotNull; import static junit.framework.Assert.assertNull; @@ -61,20 +63,6 @@ public class UnitTestTreeUtil { public static void assertPartSubList(PartSubList lstExpected, PartSubList lstReached) { - if (lstExpected.getSlcExecutionUuid() == null) { - assertNull(lstReached.getSlcExecutionUuid()); - } else { - assertEquals(lstExpected.getSlcExecutionUuid(), lstReached - .getSlcExecutionUuid()); - } - - if (lstExpected.getSlcExecutionStepUuid() == null) { - assertNull(lstReached.getSlcExecutionStepUuid()); - } else { - assertEquals(lstExpected.getSlcExecutionStepUuid(), lstReached - .getSlcExecutionStepUuid()); - } - assertEquals(lstExpected.getParts().size(), lstReached.getParts() .size()); for (int i = 0; i < lstExpected.getParts().size(); i++) { @@ -101,25 +89,47 @@ public class UnitTestTreeUtil { fail("Not enough parts."); } SimpleResultPart part = (SimpleResultPart) list.getParts().get(index); - assertPart(part, status, message, null); + assertPart(part, status, message, null, null, part.getTestRunUuid()); } public static void assertPart(TestResultPart expected, TestResultPart reached) { + String expectedTestRunUuid = null; + if (expected instanceof SimpleResultPart) { + expectedTestRunUuid = ((SimpleResultPart) expected) + .getTestRunUuid(); + } + assertPart(reached, expected.getStatus(), expected.getMessage(), - expected.getException()); + expected.getExceptionMessage(), expected + .getExceptionStackLines(), expectedTestRunUuid); } /** Assert one part of a tree test result. */ private static void assertPart(TestResultPart part, Integer status, - String message, Exception exception) { + String message, String exceptionDescription, + List stackLines, String expectedTestRunUuid) { assertEquals(status, part.getStatus()); assertEquals(message, part.getMessage()); - if (exception == null) { - assertNull(part.getException()); + if (exceptionDescription == null) { + assertNull(part.getExceptionMessage()); } else { - assertEquals(exception, part.getException()); + assertEquals(exceptionDescription, part.getExceptionMessage()); + assertEquals(stackLines.size(), part.getExceptionStackLines() + .size()); } + + if (expectedTestRunUuid != null) { + SimpleResultPart reachedPart = (SimpleResultPart) part; + assertNotNull(reachedPart.getTestRunUuid()); + assertEquals(expectedTestRunUuid, reachedPart.getTestRunUuid()); + } else { + if (part instanceof SimpleResultPart) { + assertNull(((SimpleResultPart) part).getTestRunUuid()); + } + + } + } /** Makes sure this is a singleton */ diff --git a/org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/mapping.xml b/org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/mapping.xml new file mode 100644 index 000000000..92c2c71d0 --- /dev/null +++ b/org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/mapping.xml @@ -0,0 +1,41 @@ + + + + Mapping of generic types + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/msg/mapping.xml b/org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/msg/mapping.xml new file mode 100644 index 000000000..b439e0690 --- /dev/null +++ b/org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/msg/mapping.xml @@ -0,0 +1,64 @@ + + + + Message objects XML mapping + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/process/mapping.xml b/org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/process/mapping.xml index b02c16fdd..4e04c5c49 100644 --- a/org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/process/mapping.xml +++ b/org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/process/mapping.xml @@ -5,23 +5,6 @@ Process objects XML mapping - - - - - - - - - - - - - @@ -64,4 +47,25 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/spring/applicationContext.xml b/org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/spring/applicationContext.xml index d7c089f8f..30e1cc127 100644 --- a/org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/spring/applicationContext.xml +++ b/org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/spring/applicationContext.xml @@ -11,7 +11,7 @@ classpath:org/argeo/slc/castor/process/mapping.xml - classpath:org/argeo/slc/castor/test/tree/mapping.xml + classpath:org/argeo/slc/castor/test/mapping.xml diff --git a/org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/structure/mapping.xml b/org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/structure/mapping.xml new file mode 100644 index 000000000..3e20025b3 --- /dev/null +++ b/org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/structure/mapping.xml @@ -0,0 +1,35 @@ + + + + Structure related objects XML mapping + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/test/tree/mapping.xml b/org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/test/mapping.xml similarity index 65% rename from org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/test/tree/mapping.xml rename to org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/test/mapping.xml index 4cafdaf43..0e52293fc 100644 --- a/org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/test/tree/mapping.xml +++ b/org.argeo.slc.core/src/main/resources/org/argeo/slc/castor/test/mapping.xml @@ -1,7 +1,18 @@ - TreeTestResult objects XML mapping + Test objects XML mapping + + + + + + + + + @@ -51,8 +62,6 @@ auto-complete="false"> - - @@ -63,77 +72,84 @@ auto-complete="false"> + - + + + + - - + + + - + - + - - - + + + + + + - - + + - - + + - - - - - - - + + + - + - - - - - - - - - - + - + - + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/test/SimpleResultPart.hbm.xml b/org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/test/SimpleResultPart.hbm.xml index 7b9fd7952..2e4587c3c 100644 --- a/org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/test/SimpleResultPart.hbm.xml +++ b/org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/test/SimpleResultPart.hbm.xml @@ -9,6 +9,12 @@ - + + + + + + \ No newline at end of file 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 6a9759c54..22bd34040 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,13 +7,9 @@ - - - diff --git a/org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/test/tree/TreeTestResult.hbm.xml b/org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/test/tree/TreeTestResult.hbm.xml index f1eecccba..37db79a6d 100644 --- a/org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/test/tree/TreeTestResult.hbm.xml +++ b/org.argeo.slc.core/src/main/resources/org/argeo/slc/hibernate/test/tree/TreeTestResult.hbm.xml @@ -12,10 +12,6 @@ - @@ -31,7 +27,6 @@ class="org.argeo.slc.core.structure.tree.TreeSPath"> - diff --git a/org.argeo.slc.core/src/main/resources/org/argeo/slc/xml/slc.xsd b/org.argeo.slc.core/src/main/resources/org/argeo/slc/xml/slc.xsd index d7e09650c..55bb55afd 100644 --- a/org.argeo.slc.core/src/main/resources/org/argeo/slc/xml/slc.xsd +++ b/org.argeo.slc.core/src/main/resources/org/argeo/slc/xml/slc.xsd @@ -12,7 +12,7 @@ - + @@ -29,8 +29,6 @@ - - @@ -53,16 +51,28 @@ - + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + diff --git a/org.argeo.slc.core/src/test/java/org/argeo/slc/core/test/tree/TreeTestResultCastorTest.java b/org.argeo.slc.core/src/test/java/org/argeo/slc/core/test/tree/TreeTestResultCastorTest.java index ee09d0391..f9a42a16e 100644 --- a/org.argeo.slc.core/src/test/java/org/argeo/slc/core/test/tree/TreeTestResultCastorTest.java +++ b/org.argeo.slc.core/src/test/java/org/argeo/slc/core/test/tree/TreeTestResultCastorTest.java @@ -12,7 +12,10 @@ import org.apache.commons.logging.LogFactory; import static org.argeo.slc.core.test.tree.TreeTestResultTestUtils.createCompleteTreeTestResult; -import org.argeo.slc.msg.test.tree.TreeTestResultRequest; +import org.argeo.slc.core.structure.tree.TreeSPath; +import org.argeo.slc.core.test.TestResultPart; +import org.argeo.slc.msg.test.tree.CreateTreeTestResultRequest; +import org.argeo.slc.msg.test.tree.ResultPartRequest; import org.argeo.slc.unit.AbstractSpringTestCase; import org.argeo.slc.unit.UnitXmlUtils; import org.argeo.slc.unit.test.tree.UnitTestTreeUtil; @@ -46,22 +49,49 @@ public class TreeTestResultCastorTest extends AbstractSpringTestCase { UnitTestTreeUtil.assertTreeTestResult(ttr, ttrUnm); } - public void testTreeTestResultRequest() throws Exception { - TreeTestResultRequest req = new TreeTestResultRequest(); + public void testCreateTreeTestResultRequest() throws Exception { + CreateTreeTestResultRequest req = new CreateTreeTestResultRequest(); req.setTreeTestResult(createCompleteTreeTestResult()); StringResult xml = new StringResult(); marshaller.marshal(req, xml); - log.info("Marshalled TreeTestResult Request: " + xml); + log.info("Marshalled CreateTreeTestResult Request: " + xml); UnitXmlUtils.assertXmlValidation(getBean(XmlValidator.class), new StringSource(xml.toString())); - TreeTestResultRequest reqUnm = (TreeTestResultRequest) unmarshaller + CreateTreeTestResultRequest reqUnm = (CreateTreeTestResultRequest) unmarshaller .unmarshal(new StringSource(xml.toString())); UnitTestTreeUtil.assertTreeTestResult(req.getTreeTestResult(), reqUnm .getTreeTestResult()); } + + public void testResultPartRequest() throws Exception { + TreeTestResult ttr = createCompleteTreeTestResult(); + + TreeSPath path = ttr.getCurrentPath(); + PartSubList lst = ttr.getResultParts().get(path); + //TestResultPart part = lst.getParts().get(lst.getParts().size() - 1); + TestResultPart part = lst.getParts().get(2); + + ResultPartRequest req = new ResultPartRequest(ttr, path, part); + req.setPath(ttr.getCurrentPath()); + + StringResult xml = new StringResult(); + marshaller.marshal(req, xml); + + log.info("Marshalled ResultPart Request: " + xml); + + UnitXmlUtils.assertXmlValidation(getBean(XmlValidator.class), + new StringSource(xml.toString())); + + ResultPartRequest reqUnm = (ResultPartRequest) unmarshaller + .unmarshal(new StringSource(xml.toString())); + + UnitTestTreeUtil + .assertPart(req.getResultPart(), reqUnm.getResultPart()); + } + } diff --git a/org.argeo.slc.core/src/test/java/org/argeo/slc/core/test/tree/TreeTestResultTestUtils.java b/org.argeo.slc.core/src/test/java/org/argeo/slc/core/test/tree/TreeTestResultTestUtils.java index 9b26ac8fa..c770d78ae 100644 --- a/org.argeo.slc.core/src/test/java/org/argeo/slc/core/test/tree/TreeTestResultTestUtils.java +++ b/org.argeo.slc.core/src/test/java/org/argeo/slc/core/test/tree/TreeTestResultTestUtils.java @@ -3,6 +3,8 @@ package org.argeo.slc.core.test.tree; import java.util.Date; import java.util.UUID; +import org.argeo.slc.core.build.Distribution; +import org.argeo.slc.core.deploy.DeployedSystem; import org.argeo.slc.core.process.SlcExecution; import org.argeo.slc.core.process.SlcExecutionStep; import org.argeo.slc.core.process.SlcExecutionTestUtils; @@ -10,6 +12,7 @@ import org.argeo.slc.core.structure.SimpleSElement; import org.argeo.slc.core.structure.tree.TreeSPath; import org.argeo.slc.core.structure.tree.TreeSRegistry; import org.argeo.slc.core.test.SimpleResultPart; +import org.argeo.slc.core.test.SimpleTestRun; import org.argeo.slc.core.test.TestStatus; public abstract class TreeTestResultTestUtils { @@ -27,8 +30,11 @@ public abstract class TreeTestResultTestUtils { SlcExecutionStep step = new SlcExecutionStep("LOG", "JUnit step"); slcExecution.getSteps().add(step); + SimpleTestRun testRun = new SimpleTestRun(); + testRun.setUuid(UUID.randomUUID().toString()); + String pathStr = "/test"; - TreeSPath path = TreeSPath.parseToCreatePath(pathStr); + TreeSPath path = new TreeSPath(pathStr); TreeSRegistry registry = new TreeSRegistry(); SimpleSElement elem = new SimpleSElement("Unit Test"); @@ -36,8 +42,21 @@ public abstract class TreeTestResultTestUtils { registry.register(path, elem); TreeTestResult ttr = createSimpleTreeTestResult(); - ttr.notifySlcExecution(slcExecution); ttr.notifyCurrentPath(registry, path); + ttr.notifyTestRun(testRun); + testRun.setTestResult(ttr); + testRun.setDeployedSystem(new DeployedSystem() { + private String uuid = UUID.randomUUID().toString(); + + public String getDeployedSystemId() { + return uuid; + } + + public Distribution getDistribution() { + return null; + } + }); + testRun.notifySlcExecution(slcExecution); ttr.addResultPart(createSimpleResultPartPassed()); ttr.addResultPart(createSimpleResultPartFailed()); diff --git a/org.argeo.slc.core/src/test/java/org/argeo/slc/core/test/tree/TreeTestResultWsIntegrationTest.java b/org.argeo.slc.core/src/test/java/org/argeo/slc/core/test/tree/TreeTestResultWsIntegrationTest.java index cf4859525..211a7f4f5 100644 --- a/org.argeo.slc.core/src/test/java/org/argeo/slc/core/test/tree/TreeTestResultWsIntegrationTest.java +++ b/org.argeo.slc.core/src/test/java/org/argeo/slc/core/test/tree/TreeTestResultWsIntegrationTest.java @@ -7,7 +7,7 @@ import org.apache.commons.logging.LogFactory; import static org.argeo.slc.core.test.tree.TreeTestResultTestUtils.createCompleteTreeTestResult; -import org.argeo.slc.msg.test.tree.TreeTestResultRequest; +import org.argeo.slc.msg.test.tree.CreateTreeTestResultRequest; import org.argeo.slc.unit.AbstractSpringTestCase; public class TreeTestResultWsIntegrationTest extends AbstractSpringTestCase { @@ -15,7 +15,7 @@ public class TreeTestResultWsIntegrationTest extends AbstractSpringTestCase { public void testSendSlcExecutionrequest() { WebServiceTemplate template = getBean(WebServiceTemplate.class); - TreeTestResultRequest req = new TreeTestResultRequest(); + CreateTreeTestResultRequest req = new CreateTreeTestResultRequest(); req.setTreeTestResult(createCompleteTreeTestResult()); log.info("Send SlcExecutionRequest for SlcExecution " -- 2.39.2