X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.slc.core%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fcore%2Ftest%2FSimpleResultPart.java;h=543cc98bb89849cefbbe5b626205fdd169daefdf;hb=62e442adb36b006627b17061864dfa4edde0a99a;hp=249fd2149f58a93cd43aa1a4f56ee161e9e71fd8;hpb=faf680e212bf3e18837c4f798587856e061273b3;p=gpl%2Fargeo-slc.git 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 249fd2149..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,14 +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 Integer status; + private String testRunUuid; + + /** The status. Default to ERROR since it should always be explicitely set. */ + private Integer status = ERROR; private String message; - private Throwable exception; + private String exceptionMessage; + private List exceptionStackLines = new Vector(); public SimpleResultPart() { } @@ -24,10 +38,10 @@ public class SimpleResultPart implements TestResultPart, TestStatus { this(status, message, null); } - public SimpleResultPart(Integer status, String message, Throwable exception) { + public SimpleResultPart(Integer status, String message, Exception exception) { this.status = status; this.message = message; - this.exception = exception; + setException(exception); } public String getMessage() { @@ -46,37 +60,77 @@ public class SimpleResultPart implements TestResultPart, TestStatus { return status; } - public Throwable getException() { - return exception; + public String getExceptionMessage() { + return exceptionMessage; } - public void setException(Throwable exception) { - this.exception = exception; + public void setException(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 public String toString() { StringBuffer buf = new StringBuffer(""); - if (status == PASSED) { - buf.append("PASSED "); - } else if (status == FAILED) { - buf.append("FAILED "); + buf.append(SlcTestUtils.statusToString(status)); + if (status == PASSED || status == FAILED) { + buf.append(' '); } else if (status == ERROR) { - buf.append("ERROR "); + 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; + } + }