/**\r
* Basic implementation of test run id based on a long value and a reference to\r
* a deployed system id.\r
+ * \r
+ * @deprecated\r
*/\r
public class NumericTRId implements TestResultId {\r
/** For ORM */\r
\r
private Long value;\r
private DeployedSystemId deployedSystemId;\r
- \r
- /** For ORM*/\r
- public NumericTRId(){\r
- \r
+\r
+ /** For ORM */\r
+ public NumericTRId() {\r
+\r
}\r
\r
- public NumericTRId(Long value){\r
+ public NumericTRId(Long value) {\r
this.value = value;\r
}\r
\r
\r
/** The result of a test */\r
public interface TestResult extends TestStatus {\r
- /** Gets the id of the related test result. */\r
- public TestResultId getTestResultId();\r
-\r
/** Adds a part of the result. */\r
public void addResultPart(TestResultPart part);\r
\r
\r
import org.argeo.slc.core.deploy.DeployedSystemId;\r
\r
-/** The unique id referencing a test result. */\r
+/**\r
+ * The unique id referencing a test result.\r
+ * \r
+ * @deprecated\r
+ */\r
public interface TestResultId {\r
/** Gets the id of the related deployed system. */\r
public DeployedSystemId getDeployedSystemId();\r
private Thread thread;\r
\r
private Boolean synchronous = true;\r
- \r
- protected AsynchronousTreeTestResultListener(){\r
+\r
+ protected AsynchronousTreeTestResultListener() {\r
this(true);\r
}\r
\r
- protected AsynchronousTreeTestResultListener(Boolean synchronousByDefault){\r
+ protected AsynchronousTreeTestResultListener(Boolean synchronousByDefault) {\r
synchronous = synchronousByDefault;\r
}\r
\r
public final void resultPartAdded(TestResult testResult,\r
TestResultPart testResultPart) {\r
TreeTestResult result = (TreeTestResult) testResult;\r
- PartStruct partStruct = new PartStruct(result.getCurrentPath(),\r
- (NumericTRId) result.getTestResultId(), testResultPart, result);\r
+ PartStruct partStruct = new PartStruct(result.getCurrentPath(), result\r
+ .getUuid(), testResultPart, result);\r
\r
if (!synchronous) {\r
synchronized (partStructs) {\r
/** The tree path of this part. */\r
public final TreeSPath path;\r
/** The test result id of the related test result */\r
- public final NumericTRId resultId;\r
+ public final String uuid;\r
/** The part itself */\r
public final TestResultPart part;\r
/** The tree test result itself. */\r
public final TreeTestResult result;\r
\r
/** Constructor */\r
- public PartStruct(TreeSPath path, NumericTRId resultId,\r
- TestResultPart part, TreeTestResult result) {\r
+ public PartStruct(TreeSPath path, String uuid, TestResultPart part,\r
+ TreeTestResult result) {\r
super();\r
this.path = path;\r
- this.resultId = resultId;\r
+ this.uuid = uuid;\r
this.part = part;\r
this.result = result;\r
}\r
/** For ORM */\r
private Long tid;\r
\r
- private NumericTRId testResultId;\r
+ //private NumericTRId testResultId;\r
private List<TestResultListener> listeners = new Vector<TestResultListener>();\r
\r
private TreeSPath currentPath;\r
\r
private boolean isClosed = false;\r
\r
+ private String uuid;\r
+\r
private SortedMap<TreeSPath, PartSubList> resultParts = new TreeMap<TreeSPath, PartSubList>();\r
private SortedMap<TreeSPath, StructureElement> elements = new TreeMap<TreeSPath, StructureElement>();\r
\r
private StructureRegistry<TreeSPath> registry;\r
\r
- public TestResultId getTestResultId() {\r
- return testResultId;\r
- }\r
+// public TestResultId getTestResultId() {\r
+// return testResultId;\r
+// }\r
\r
/**\r
* Use of a <code>NumericTRId</code> is required by Hibernate. <b>It may\r
* change in the future.</b>\r
*/\r
- public NumericTRId getNumericResultId() {\r
- return testResultId;\r
- }\r
+// public NumericTRId getNumericResultId() {\r
+// return testResultId;\r
+// }\r
\r
/** Sets the test result id as a numeric test result id. */\r
- public void setNumericResultId(NumericTRId testResultId) {\r
- this.testResultId = testResultId;\r
- }\r
+// public void setNumericResultId(NumericTRId testResultId) {\r
+// this.testResultId = testResultId;\r
+// }\r
\r
/** Sets the list of listeners. */\r
public void setListeners(List<TestResultListener> listeners) {\r
\r
public void close() {\r
if (isClosed) {\r
- throw new SlcException("Test Result #" + getTestResultId()\r
+ throw new SlcException("Test Result #" + getUuid()\r
+ " alredy closed.");\r
}\r
closeDate = new Date();\r
}\r
isClosed = true;\r
\r
- log.info("Test Result #" + getTestResultId() + " closed.");\r
+ log.info("Test Result #" + getUuid() + " closed.");\r
}\r
\r
Long getTid() {\r
this.elements = pathNames;\r
}\r
\r
+ public String getUuid() {\r
+ return uuid;\r
+ }\r
+\r
+ public void setUuid(String uuid) {\r
+ this.uuid = uuid;\r
+ }\r
+\r
}\r
@Override\r
protected void resultPartAdded(PartStruct partStruct) {\r
TestResultPart part = partStruct.part;\r
- String msg = partStruct.part + " - " + partStruct.resultId + ":"\r
+ String msg = partStruct.part + " - " + partStruct.uuid + ":"\r
+ partStruct.path;\r
if (part.getStatus().equals(TestStatus.PASSED)) {\r
log.info(msg);\r
protected void resultPartAdded(PartStruct partStruct) {\r
try {\r
TreeTestResult persistedResult = testResultDao\r
- .getTestResult(partStruct.resultId);\r
- \r
- if(persistedResult==null){\r
- testResultDao.create(partStruct.result);\r
- }\r
- else{\r
- testResultDao.update(partStruct.result);\r
- }\r
-/*\r
- TreeSPath path = treeSPathDao.getOrCreate(partStruct.path);\r
-\r
- StructureRegistry<TreeSPath> localRegistry = partStruct.result\r
- .getRegistry();\r
- TreeSRegistry registry = getOrCreateTreeSRegistry(path);\r
- treeSRegistryDao.syncPath(registry, localRegistry, path);\r
+ .getTestResult(partStruct.uuid);\r
\r
if (persistedResult == null) {\r
- persistedResult = new TreeTestResult();\r
- persistedResult.setNumericResultId(partStruct.resultId);\r
- PartSubList subList = new PartSubList();\r
- subList.getParts().add(partStruct.part);\r
- persistedResult.getResultParts().put(path, subList);\r
-\r
- testResultDao.create(persistedResult);\r
+ testResultDao.create(partStruct.result);\r
} else {\r
- PartSubList subList = persistedResult.getResultParts()\r
- .get(path);\r
- if (subList == null) {\r
- subList = new PartSubList();\r
- persistedResult.getResultParts().put(path, subList);\r
- }\r
- persistedResult.getResultParts().get(path).getParts().add(\r
- partStruct.part);\r
-\r
- if (log.isTraceEnabled()) {\r
- log.trace("ResultId:" + persistedResult.getTestResultId());\r
- log.trace("ResultParts size:"\r
- + persistedResult.getResultParts().size());\r
- log.trace("Sublist size:" + subList.getParts().size());\r
- log.trace("Part: " + partStruct.part);\r
- }\r
- testResultDao.update(persistedResult);\r
- }*/\r
+ testResultDao.update(partStruct.result);\r
+ }\r
+ /*\r
+ * TreeSPath path = treeSPathDao.getOrCreate(partStruct.path);\r
+ * \r
+ * StructureRegistry<TreeSPath> localRegistry = partStruct.result\r
+ * .getRegistry(); TreeSRegistry registry =\r
+ * getOrCreateTreeSRegistry(path);\r
+ * treeSRegistryDao.syncPath(registry, localRegistry, path);\r
+ * \r
+ * if (persistedResult == null) { persistedResult = new\r
+ * TreeTestResult();\r
+ * persistedResult.setNumericResultId(partStruct.resultId);\r
+ * PartSubList subList = new PartSubList();\r
+ * subList.getParts().add(partStruct.part);\r
+ * persistedResult.getResultParts().put(path, subList);\r
+ * \r
+ * testResultDao.create(persistedResult); } else { PartSubList\r
+ * subList = persistedResult.getResultParts() .get(path); if\r
+ * (subList == null) { subList = new PartSubList();\r
+ * persistedResult.getResultParts().put(path, subList); }\r
+ * persistedResult.getResultParts().get(path).getParts().add(\r
+ * partStruct.part);\r
+ * \r
+ * if (log.isTraceEnabled()) { log.trace("ResultId:" +\r
+ * persistedResult.getTestResultId()); log.trace("ResultParts size:" +\r
+ * persistedResult.getResultParts().size()); log.trace("Sublist\r
+ * size:" + subList.getParts().size()); log.trace("Part: " +\r
+ * partStruct.part); } testResultDao.update(persistedResult); }\r
+ */\r
} catch (Exception e) {\r
- log.error("Could not persist part for result #"\r
- + partStruct.resultId, e);\r
+ log.error("Could not persist part for result #" + partStruct.uuid,\r
+ e);\r
}\r
}\r
\r
@Override\r
protected void postClose(TreeTestResult testResult) {\r
TreeTestResult persistedResult = (TreeTestResult) testResultDao\r
- .getTestResult(testResult.getTestResultId());\r
+ .getTestResult(testResult.getUuid());\r
\r
if (persistedResult != null) {\r
persistedResult.setCloseDate(testResult.getCloseDate());\r
}\r
if (log.isDebugEnabled())\r
log.debug("Closed result persister for result "\r
- + testResult.getNumericResultId());\r
+ + testResult.getUuid());\r
}\r
\r
private TreeSRegistry getOrCreateTreeSRegistry(TreeSPath path) {\r
*/\r
protected File getResultFile(TreeTestResult result) {\r
return new File(reportDir.getPath() + File.separator + "slc-result-"\r
- + result.getTestResultId() + ".html");\r
+ + result.getUuid() + ".html");\r
}\r
\r
/** Sets the DAO to use to extract all data. */\r
StringBuffer buf = new StringBuffer("");\r
buf.append("<html>\n");\r
buf.append("<header>");\r
- buf.append("<title>Result #").append(result.getTestResultId());\r
+ buf.append("<title>Result #").append(result.getUuid());\r
buf.append("</title>\n");\r
report.addStyles(buf);\r
buf.append("</header>\n");\r
\r
// Header\r
buf.append("<a name=\"top\"/>\n");\r
- buf.append("<h1>Result #").append(result.getTestResultId()).append(\r
+ buf.append("<h1>Result #").append(result.getUuid()).append(\r
"</h1>\n");\r
Date closeDate = result.getCloseDate();\r
if (closeDate == null) {\r
buf.append("<td><a class=\"nav\" href=\"");\r
buf.append(report.getResultFile(result).getName());\r
buf.append("\" target=\"main\">#");\r
- buf.append(result.getTestResultId()).append("</a></td>\n");\r
+ buf.append(result.getUuid()).append("</a></td>\n");\r
\r
buf.append("</tr>\n");\r
}\r
*/\r
public interface TestResultDao<T extends TestResult> {\r
/** Gets a test result based on its id. */\r
- public T getTestResult(TestResultId id);\r
+ public T getTestResult(String uuid);\r
\r
/** Persists a new test result. */\r
public void create(TestResult testResult);\r
getHibernateTemplate().saveOrUpdate(testResult);\r
}\r
\r
- public TreeTestResult getTestResult(TestResultId id) {\r
- NumericTRId ntrid = (NumericTRId) id;\r
+ public TreeTestResult getTestResult(String uuid) {\r
List<?> list = getHibernateTemplate().find(\r
- "from TreeTestResult where numericResultId.value=?",\r
- ntrid.getValue());\r
+ "from TreeTestResult where uuid=?", uuid);\r
if (list.size() == 0) {\r
return null;\r
} else {\r
public class UnitTestTreeUtil {\r
public static void assertTreeTestResult(TreeTestResult expected,\r
TreeTestResult reached) {\r
- assertEquals(expected.getTestResultId(), reached.getTestResultId());\r
+ assertEquals(expected.getUuid(), reached.getUuid());\r
assertDateSec(expected.getCloseDate(), reached.getCloseDate());\r
\r
assertEquals(expected.getResultParts().size(), reached.getResultParts()\r
auto-complete="false">\r
<map-to ns-uri="http://argeo.org/projects/slc/schemas"\r
ns-prefix="slc" />\r
- <field name="closeDate" />\r
- <field name="numericResultId"\r
- type="org.argeo.slc.core.test.NumericTRId">\r
- <bind-xml auto-naming="deriveByClass"\r
- location="result-id">\r
- </bind-xml>\r
+ <field name="uuid" type="string">\r
+ <bind-xml name="uuid" node="attribute" />\r
</field>\r
+ <field name="closeDate" />\r
<field name="resultParts" collection="map">\r
<bind-xml name="result-part" location="result-parts">\r
<class name="org.exolab.castor.mapping.MapItem">\r
</field>\r
</class>\r
\r
- <class name="org.argeo.slc.core.test.NumericTRId"\r
- auto-complete="false">\r
- <map-to ns-uri="http://argeo.org/projects/slc/schemas"\r
- ns-prefix="slc" />\r
- <field name="value">\r
- <bind-xml node="attribute" />\r
- </field>\r
- </class>\r
-\r
<class name="org.argeo.slc.core.test.tree.PartSubList"\r
auto-complete="false">\r
<map-to ns-uri="http://argeo.org/projects/slc/schemas"\r
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">\r
<hibernate-mapping package="org.argeo.slc.core.test.tree">\r
<class name="TreeTestResult" table="TREE_TEST_RESULT">\r
- <id name="tid" column="T_ID">\r
- <generator class="native" />\r
- </id>\r
+ <id name="uuid" column="UUID"/>\r
\r
<property name="closeDate" column="CLOSE_DATE" type="timestamp"\r
not-null="false" />\r
\r
- <many-to-one name="numericResultId" unique="true"\r
- not-null="true" column="TEST_RESULT_ID" cascade="all" lazy="false" />\r
-\r
<map name="resultParts" table="RESULT_PARTS_MAP" cascade="all"\r
lazy="false" sort="natural">\r
<key column="PARENT_ID" />\r
<xs:element name="tree-test-result" type="slc:TreeTestResultType" />\r
<xs:complexType name="TreeTestResultType">\r
<xs:all>\r
- <xs:element name="result-id" type="slc:ResultIdType" />\r
<xs:element name="close-date" type="xs:dateTime" />\r
<xs:element name="result-parts" minOccurs="0"\r
type="slc:ResultPartsType" />\r
<xs:element name="elements" minOccurs="0"\r
type="slc:ElementsType" />\r
</xs:all>\r
- </xs:complexType>\r
- <xs:complexType name="ResultIdType">\r
- <xs:all>\r
- <xs:element name="numeric-tRId"\r
- type="slc:NumericResultIdType" />\r
- </xs:all>\r
- </xs:complexType>\r
- <xs:complexType name="NumericResultIdType">\r
- <xs:attribute name="value" type="xs:integer" use="required" />\r
+ <xs:attribute name="uuid" use="required"/>\r
</xs:complexType>\r
<xs:complexType name="ResultPartsType">\r
<xs:sequence>\r
package org.argeo.slc.core.test.tree;\r
\r
import java.util.Date;\r
+import java.util.UUID;\r
\r
import org.argeo.slc.core.process.SlcExecution;\r
import org.argeo.slc.core.process.SlcExecutionStep;\r
import org.argeo.slc.core.structure.SimpleSElement;\r
import org.argeo.slc.core.structure.tree.TreeSPath;\r
import org.argeo.slc.core.structure.tree.TreeSRegistry;\r
-import org.argeo.slc.core.test.NumericTRId;\r
import org.argeo.slc.core.test.SimpleResultPart;\r
import org.argeo.slc.core.test.TestStatus;\r
\r
\r
public static TreeTestResult createSimpleTreeTestResult() {\r
TreeTestResult treeTestResult = new TreeTestResult();\r
- treeTestResult.setNumericResultId(new NumericTRId(System\r
- .currentTimeMillis()));\r
+ treeTestResult.setUuid(UUID.randomUUID().toString());\r
treeTestResult.setCloseDate(new Date());\r
return treeTestResult;\r
}\r
testResultDao.create(ttr);\r
\r
TreeTestResult ttrPersisted = (TreeTestResult) testResultDao\r
- .getTestResult(ttr.getTestResultId());\r
+ .getTestResult(ttr.getUuid());\r
\r
UnitTestTreeUtil.assertTreeTestResult(ttr, ttrPersisted);\r
}\r
testResultDao.create(ttr);\r
\r
TreeTestResult ttrUpdated = (TreeTestResult) testResultDao\r
- .getTestResult(ttr.getTestResultId());\r
+ .getTestResult(ttr.getUuid());\r
\r
// Modifying ttrUpdated\r
\r
\r
// comparison of ttrUpdated and ttrRetrieved\r
TreeTestResult ttrRetrieved = (TreeTestResult) testResultDao\r
- .getTestResult(ttr.getTestResultId());\r
+ .getTestResult(ttr.getUuid());\r
\r
UnitTestTreeUtil.assertTreeTestResult(ttrRetrieved, ttrUpdated);\r
}\r
\r
<bean id="testResult"\r
class="org.argeo.slc.core.test.tree.TreeTestResult">\r
- <property name="numericResultId">\r
- <bean class="org.argeo.slc.core.test.NumericTRId">\r
- <property name="value" value="1" />\r
- </bean>\r
+ <property name="uuid">\r
+ <bean factory-bean="uuid" factory-method="toString"></bean>\r
</property>\r
<property name="listeners">\r
<list>\r
</property>\r
</bean>\r
\r
+ <bean name="uuid" class="java.util.UUID" factory-method="randomUUID"\r
+ scope="prototype">\r
+ </bean>\r
+\r
<bean id="resultLogger"\r
class="org.argeo.slc.core.test.tree.TreeTestResultLogger"\r
init-method="init">\r