import org.argeo.slc.core.structure.tree.TreeSPath;\r
\r
/** Ant task that can be registered within a structure. */\r
-public abstract class SAwareTask extends AbstractSpringTask implements\r
- StructureElement {\r
+public abstract class SAwareTask extends AbstractSpringTask {\r
private String path;\r
private TreeSPath treeSPath;\r
private final List<AbstractSpringArg> sAwareArgs = new Vector<AbstractSpringArg>();\r
\r
treeSPath = taskPath;\r
} else {\r
- treeSPath = TreeSPath.parseToCreatePath(path);\r
+ treeSPath = new TreeSPath(path);\r
}\r
\r
- if (structureElementArg != null)\r
- getRegistry().register(treeSPath,\r
- structureElementArg.getStructureElement());\r
- else\r
- getRegistry().register(treeSPath, this);\r
+ if (getRegistry().getElement(treeSPath) == null) {\r
+ // No structure element registered.\r
+ if (structureElementArg != null) {\r
+ getRegistry().register(treeSPath,\r
+ structureElementArg.getStructureElement());\r
+ } else {\r
+ if (getDescription() != null) {\r
+ getRegistry().register(treeSPath,\r
+ new SimpleSElement(getDescription()));\r
+ }\r
+ }\r
+ }\r
\r
// notify registered args\r
for (AbstractSpringArg arg : sAwareArgs) {\r
--- /dev/null
+package org.argeo.slc.core.structure;\r
+\r
+public interface StructureElementProvider {\r
+ public StructureElement createStructureElement();\r
+}\r
package org.argeo.slc.core.test;\r
\r
-\r
/**\r
* <p>\r
* Basic implementation of a result part, implementing the standard three status\r
if (exception == null)\r
return;\r
\r
- //this.exceptionMessage = exception.getMessage();\r
-\r
StringBuffer buf = new StringBuffer("");\r
- buf.append(exception.getMessage());\r
+ buf.append(exception.toString());\r
buf.append('\n');\r
- for(StackTraceElement elem : exception.getStackTrace()){\r
- buf.append(elem.toString()).append('\n');\r
+ for (StackTraceElement elem : exception.getStackTrace()) {\r
+ buf.append('\t').append(elem.toString()).append('\n');\r
}\r
- \r
+\r
+ if (exception.getCause() != null)\r
+ addRootCause(buf, exception.getCause());\r
+\r
this.exceptionMessage = buf.toString();\r
- \r
-/* \r
- StringWriter writer = null;\r
- StringReader reader = null;\r
- try {\r
- writer = new StringWriter();\r
- exception.printStackTrace(new PrintWriter(writer));\r
- reader = new StringReader(writer.toString());\r
- exceptionStackLines = new Vector<String>(IOUtils.readLines(reader));\r
- } catch (IOException e) {\r
- // silent\r
- } finally {\r
- IOUtils.closeQuietly(writer);\r
- IOUtils.closeQuietly(reader);\r
- }*/\r
+ }\r
+\r
+ protected void addRootCause(StringBuffer buf, Throwable cause) {\r
+ if (cause == null)\r
+ return;\r
+\r
+ buf.append("Caused by: " + cause.getMessage());\r
+ for (StackTraceElement elem : cause.getStackTrace()) {\r
+ buf.append('\t').append(elem.toString()).append('\n');\r
+ }\r
+\r
+ if (cause.getCause() != null) {\r
+ addRootCause(buf, cause.getCause());\r
+ }\r
}\r
\r
@Override\r
package org.argeo.slc.core.test;\r
\r
/** Listener to the operations on a test result. */\r
-public interface TestResultListener {\r
+public interface TestResultListener<T extends TestResult> {\r
/** Notified when a part was added to a test result. */\r
- public void resultPartAdded(TestResult testResult,\r
+ public void resultPartAdded(T testResult,\r
TestResultPart testResultPart);\r
\r
/** Stops listening and release the related resources. */\r
- public void close(TestResult testResult);\r
+ public void close(T testResult);\r
}\r
import java.util.Vector;\r
\r
import org.argeo.slc.core.structure.tree.TreeSPath;\r
-import org.argeo.slc.core.test.NumericTRId;\r
import org.argeo.slc.core.test.TestResult;\r
import org.argeo.slc.core.test.TestResultListener;\r
import org.argeo.slc.core.test.TestResultPart;\r
* Abstract asynchronous implementation of a listener listening to a\r
* <code>TreeTestResult</code>.\r
* \r
+ * @deprecated listeners should be called synchronously\r
* @see TreeTestResult\r
*/\r
public abstract class AsynchronousTreeTestResultListener implements\r
import org.argeo.slc.core.structure.SimpleSElement;\r
import org.argeo.slc.core.structure.StructureAware;\r
import org.argeo.slc.core.structure.StructureElement;\r
+import org.argeo.slc.core.structure.StructureElementProvider;\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
* children.\r
*/\r
public class CompositeTreeTestDefinition implements TestDefinition,\r
- StructureAware {\r
+ StructureAware<TreeSPath> {\r
private Log log = LogFactory.getLog(CompositeTreeTestDefinition.class);\r
\r
private List<TestDefinition> tasks = null;\r
private List<TreeSPath> taskPaths = null;\r
private TreeSPath path;\r
- private StructureRegistry registry;\r
+ private StructureRegistry<TreeSPath> registry;\r
\r
public void execute(TestRun testRun) {\r
log.info("Execute sequence of test definitions...");\r
}\r
}\r
\r
- public void notifyCurrentPath(StructureRegistry registry, StructurePath path) {\r
- this.path = (TreeSPath) path;\r
+ public void notifyCurrentPath(StructureRegistry<TreeSPath> registry,\r
+ TreeSPath path) {\r
+ this.path = path;\r
this.registry = registry;\r
- \r
+\r
// clear task paths\r
taskPaths.clear();\r
\r
Integer count = 0;\r
for (TestDefinition task : tasks) {\r
final StructureElement element;\r
- if (task instanceof StructureElement) {\r
- element = (StructureElement) task;\r
+ if (task instanceof StructureElementProvider) {\r
+ element = ((StructureElementProvider) task)\r
+ .createStructureElement();\r
} else {\r
element = new SimpleSElement("[no desc]");\r
}\r
registry.register(taskPath, element);\r
taskPaths.add(taskPath);\r
if (task instanceof StructureAware) {\r
- ((StructureAware) task).notifyCurrentPath(registry, taskPath);\r
+ ((StructureAware<TreeSPath>) task).notifyCurrentPath(registry,\r
+ taskPath);\r
}\r
count++;\r
}\r
public class TreeTestResult implements TestResult, StructureAware<TreeSPath> {\r
private Log log = LogFactory.getLog(TreeTestResult.class);\r
\r
- private List<TestResultListener> listeners = new Vector<TestResultListener>();\r
+ private List<TestResultListener<TreeTestResult>> listeners = new Vector<TestResultListener<TreeTestResult>>();\r
\r
private TreeSPath currentPath;\r
private TestRun currentTestRun;\r
private SortedMap<TreeSPath, StructureElement> elements = new TreeMap<TreeSPath, StructureElement>();\r
\r
/** Sets the list of listeners. */\r
- public void setListeners(List<TestResultListener> listeners) {\r
+ public void setListeners(List<TestResultListener<TreeTestResult>> listeners) {\r
this.listeners = listeners;\r
}\r
\r
\r
// notify listeners\r
synchronized (listeners) {\r
- for (TestResultListener listener : listeners) {\r
+ for (TestResultListener<TreeTestResult> listener : listeners) {\r
listener.resultPartAdded(this, part);\r
}\r
}\r
closeDate = new Date();\r
\r
synchronized (listeners) {\r
- for (TestResultListener listener : listeners) {\r
+ for (TestResultListener<TreeTestResult> listener : listeners) {\r
listener.close(this);\r
}\r
listeners.clear();\r
public TestRun getCurrentTestRun() {\r
return currentTestRun;\r
}\r
- \r
- \r
+\r
}\r
import org.apache.commons.logging.LogFactory;\r
\r
import org.argeo.slc.core.test.SimpleResultPart;\r
+import org.argeo.slc.core.test.TestResult;\r
+import org.argeo.slc.core.test.TestResultListener;\r
import org.argeo.slc.core.test.TestResultPart;\r
import org.argeo.slc.core.test.TestStatus;\r
+import org.argeo.slc.core.test.tree.AsynchronousTreeTestResultListener.PartStruct;\r
\r
/**\r
* Listener logging tree-based test results to the underlying logging system.\r
* @see TreeTestResult\r
* \r
*/\r
-public class TreeTestResultLogger extends AsynchronousTreeTestResultListener {\r
+public class TreeTestResultLogger implements TestResultListener<TreeTestResult> {\r
\r
private static Log log = LogFactory.getLog(TreeTestResultLogger.class);\r
\r
- public TreeTestResultLogger() {\r
- super(true);\r
- }\r
-\r
- @Override\r
- protected void resultPartAdded(PartStruct partStruct) {\r
- TestResultPart part = partStruct.part;\r
- String msg = partStruct.part + " - " + partStruct.uuid + ":"\r
- + partStruct.path;\r
- if (part.getStatus().equals(TestStatus.PASSED)) {\r
+ public void resultPartAdded(TreeTestResult testResult,\r
+ TestResultPart testResultPart) {\r
+ String msg = testResultPart + " - " + testResult.getUuid() + ":"\r
+ + testResult.getCurrentPath();\r
+ if (testResultPart.getStatus().equals(TestStatus.PASSED)) {\r
log.info(msg);\r
- } else if (part.getStatus().equals(TestStatus.FAILED)) {\r
+ } else if (testResultPart.getStatus().equals(TestStatus.FAILED)) {\r
log.warn(msg);\r
- } else if (part.getStatus().equals(TestStatus.ERROR)) {\r
- log.error(msg + ((SimpleResultPart) part).getExceptionMessage());\r
+ } else if (testResultPart.getStatus().equals(TestStatus.ERROR)) {\r
+ log.error(msg + "\n" + testResultPart.getExceptionMessage());\r
} else {\r
log.error("Unknow test status: " + msg);\r
}\r
}\r
\r
+ public void close(TreeTestResult testResult) {\r
+ }\r
+\r
}\r
import org.apache.commons.logging.Log;\r
import org.apache.commons.logging.LogFactory;\r
\r
-import org.argeo.slc.core.structure.SimpleSElement;\r
-import org.argeo.slc.core.structure.StructureElement;\r
-import org.argeo.slc.core.structure.StructureRegistry;\r
-import org.argeo.slc.core.structure.tree.TreeSPath;\r
-import org.argeo.slc.core.structure.tree.TreeSRegistry;\r
-import org.argeo.slc.dao.structure.tree.TreeSPathDao;\r
-import org.argeo.slc.dao.structure.tree.TreeSRegistryDao;\r
-import org.argeo.slc.dao.test.TestResultDao;\r
+import org.argeo.slc.core.test.TestResultListener;\r
+import org.argeo.slc.core.test.TestResultPart;\r
import org.argeo.slc.dao.test.tree.TreeTestResultDao;\r
\r
/**\r
* \r
* @see TreeTestResult\r
*/\r
-public class TreeTestResultPersister extends AsynchronousTreeTestResultListener {\r
+public class TreeTestResultPersister implements\r
+ TestResultListener<TreeTestResult> {\r
private static Log log = LogFactory.getLog(TreeTestResultPersister.class);\r
\r
private TreeTestResultDao testResultDao;\r
- private TreeSPathDao treeSPathDao;\r
- private TreeSRegistryDao treeSRegistryDao;\r
\r
- @Override\r
- protected void resultPartAdded(PartStruct partStruct) {\r
+ public void resultPartAdded(TreeTestResult testResult,\r
+ TestResultPart testResultPart) {\r
try {\r
TreeTestResult persistedResult = testResultDao\r
- .getTestResult(partStruct.uuid);\r
+ .getTestResult(testResult.getUuid());\r
\r
if (persistedResult == null) {\r
- testResultDao.create(partStruct.result);\r
+ testResultDao.create(testResult);\r
} else {\r
- testResultDao.update(partStruct.result);\r
+ testResultDao.update(testResult);\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 #" + partStruct.uuid,\r
- e);\r
+ log.error("Could not persist result part " + testResultPart\r
+ + " for result " + testResult.getUuid());\r
}\r
}\r
\r
- @Override\r
- protected void postClose(TreeTestResult testResult) {\r
+ public void close(TreeTestResult testResult) {\r
TreeTestResult persistedResult = (TreeTestResult) testResultDao\r
.getTestResult(testResult.getUuid());\r
\r
+ testResult.getUuid());\r
}\r
\r
- private TreeSRegistry getOrCreateTreeSRegistry(TreeSPath path) {\r
- TreeSRegistry registry = treeSRegistryDao.getActiveTreeSRegistry();\r
- if (registry == null) {\r
- registry = new TreeSRegistry();\r
- registry.setStatus(TreeSRegistry.STATUS_ACTIVE);\r
- treeSRegistryDao.create(registry);\r
- return treeSRegistryDao.getActiveTreeSRegistry();\r
- } else {\r
- return registry;\r
- }\r
- }\r
-\r
/** Sets the DAO to use in order to persist the results. */\r
public void setTestResultDao(TreeTestResultDao testResultDao) {\r
this.testResultDao = testResultDao;\r
}\r
-\r
- /** Sets the tree structure path DAO. */\r
- public void setTreeSPathDao(TreeSPathDao treeSPathDao) {\r
- this.treeSPathDao = treeSPathDao;\r
- }\r
-\r
- /** Sets the tree structure registry DAO. */\r
- public void setTreeSRegistryDao(TreeSRegistryDao treeSRegistryDao) {\r
- this.treeSRegistryDao = treeSRegistryDao;\r
- }\r
-\r
}\r
package org.argeo.slc.dao.test;\r
\r
+import java.util.Date;\r
import java.util.List;\r
\r
import org.argeo.slc.core.test.TestResult;\r
-import org.argeo.slc.core.test.TestResultId;\r
\r
/**\r
* The dao for <code>TestResult</code>.\r
\r
/** Lists all test results. */\r
public List<T> listTestResults();\r
+ \r
+\r
+ public void close(String id, Date closeDate);\r
}\r
import org.argeo.slc.dao.test.TestResultDao;\r
\r
public interface TreeTestResultDao extends TestResultDao<TreeTestResult> {\r
- /** Lists results containing this path*/\r
+ /** Lists results containing this path */\r
public List<TreeTestResult> listResults(TreeSPath path);\r
}\r
package org.argeo.slc.hibernate.test.tree;\r
\r
+import java.util.Date;\r
import java.util.List;\r
\r
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;\r
\r
+import org.argeo.slc.core.SlcException;\r
import org.argeo.slc.core.structure.tree.TreeSPath;\r
import org.argeo.slc.core.test.NumericTRId;\r
import org.argeo.slc.core.test.TestResult;\r
return list;\r
}\r
\r
+ public void close(String id, Date closeDate) {\r
+// TreeTestResult ttr = (TreeTestResult) getHibernateTemplate().load(\r
+// TreeTestResult.class, id);\r
+ TreeTestResult ttr = getTestResult(id);\r
+ if (ttr != null) {\r
+ ttr.setCloseDate(closeDate);\r
+ getHibernateTemplate().update(ttr);\r
+ } else {\r
+ throw new SlcException("Result with id " + id\r
+ + " could not be closed because it was not found.");\r
+ }\r
+ }\r
+\r
}\r
}\r
}\r
\r
- /**\r
- * Assert one part of a tree test result.\r
- * \r
- * @deprecated use {@link #assertPart(TestResultPart, TestResultPart)}\r
- * instead\r
- */\r
+ /** Asserts one part of a tree test result */\r
public static void assertPart(TreeTestResult testResult, String pathStr,\r
int index, Integer status, String message) {\r
- TreeSPath path = TreeSPath.parseToCreatePath(pathStr);\r
+ TreeSPath path = new TreeSPath(pathStr);\r
PartSubList list = testResult.getResultParts().get(path);\r
if (list == null) {\r
fail("No result for path " + path);\r
fail("Not enough parts.");\r
}\r
SimpleResultPart part = (SimpleResultPart) list.getParts().get(index);\r
- assertPart(part, status, message, null, part.getTestRunUuid());\r
+ assertPart(part, status, message, null, part.getTestRunUuid(), true);\r
}\r
\r
public static void assertPart(TestResultPart expected,\r
}\r
\r
assertPart(reached, expected.getStatus(), expected.getMessage(),\r
- expected.getExceptionMessage(), expectedTestRunUuid);\r
+ expected.getExceptionMessage(), expectedTestRunUuid, false);\r
}\r
\r
/** Assert one part of a tree test result. */\r
private static void assertPart(TestResultPart part, Integer status,\r
String message, String exceptionDescription,\r
- String expectedTestRunUuid) {\r
+ String expectedTestRunUuid, boolean skipExceptionMessage) {\r
assertEquals(status, part.getStatus());\r
\r
if (log.isTraceEnabled()) {\r
log.trace("Reached message:" + part.getMessage());\r
}\r
assertEquals(message, part.getMessage());\r
- if (exceptionDescription == null) {\r
- assertNull(part.getExceptionMessage());\r
- } else {\r
- if (log.isTraceEnabled()) {\r
- log.trace("Expected exception message:" + exceptionDescription);\r
- log.trace("Reached exception message:"\r
- + part.getExceptionMessage());\r
+ if (!skipExceptionMessage) {\r
+ if (exceptionDescription == null) {\r
+ assertNull(part.getExceptionMessage());\r
+ } else {\r
+ if (log.isTraceEnabled()) {\r
+ log.trace("Expected exception message:"\r
+ + exceptionDescription);\r
+ log.trace("Reached exception message:"\r
+ + part.getExceptionMessage());\r
+ }\r
+\r
+ assertEquals(exceptionDescription, part.getExceptionMessage());\r
}\r
-\r
- assertEquals(exceptionDescription, part.getExceptionMessage());\r
}\r
\r
if (expectedTestRunUuid != null) {\r
package org.argeo.slc.hibernate.test.tree;\r
\r
import static org.argeo.slc.core.test.tree.TreeTestResultTestUtils.createCompleteTreeTestResult;\r
+import static org.argeo.slc.core.test.tree.TreeTestResultTestUtils.createSimpleTreeTestResult;\r
\r
import java.util.Date;\r
\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.SimpleResultPart;\r
+import org.argeo.slc.core.test.TestStatus;\r
import org.argeo.slc.core.test.tree.TreeTestResult;\r
import org.argeo.slc.core.test.tree.TreeTestResultTestUtils;\r
import org.argeo.slc.dao.test.tree.TreeTestResultDao;\r
import org.argeo.slc.unit.test.tree.UnitTestTreeUtil;\r
\r
public class TreeTestResultDaoHibernateTest extends AbstractSpringTestCase {\r
+ private TreeTestResultDao testResultDao = null;\r
+\r
+ @Override\r
+ public void setUp() {\r
+ testResultDao = (TreeTestResultDao) getContext().getBean(\r
+ "testResultDao");\r
+ }\r
\r
public void testCreate() {\r
- TreeTestResultDao testResultDao = (TreeTestResultDao) getContext()\r
- .getBean("testResultDao");\r
\r
TreeTestResult ttr = createCompleteTreeTestResult();\r
testResultDao.create(ttr);\r
\r
TreeTestResult ttrPersisted = (TreeTestResult) testResultDao\r
.getTestResult(ttr.getUuid());\r
- \r
+\r
UnitTestTreeUtil.assertTreeTestResult(ttr, ttrPersisted);\r
}\r
\r
public void testUpdate() {\r
- TreeTestResultDao testResultDao = (TreeTestResultDao) getContext()\r
- .getBean("testResultDao");\r
-\r
TreeTestResult ttr = createCompleteTreeTestResult();\r
testResultDao.create(ttr);\r
\r
TreeTestResult ttrUpdated = (TreeTestResult) testResultDao\r
.getTestResult(ttr.getUuid());\r
- \r
+\r
// Modifying ttrUpdated\r
- \r
- /** this closeDate update commented because \r
- * the assertTreeTestResult will find a unexpected \r
- * discrepancy in the date.\r
- * ttrUpdated.setCloseDate(new Date()); \r
+\r
+ /**\r
+ * this closeDate update commented because the assertTreeTestResult will\r
+ * find a unexpected discrepancy in the date.\r
+ * ttrUpdated.setCloseDate(new Date());\r
*/\r
- \r
+\r
String pathStr = "/test";\r
TreeSPath path = TreeSPath.parseToCreatePath(pathStr);\r
\r
registry.register(path, elem);\r
\r
ttrUpdated.notifyCurrentPath(registry, path);\r
- \r
- ttrUpdated.addResultPart(TreeTestResultTestUtils.createSimpleResultPartPassed());\r
- ttrUpdated.addResultPart(TreeTestResultTestUtils.createSimpleResultPartFailed());\r
- ttrUpdated.addResultPart(TreeTestResultTestUtils.createSimpleResultPartError());\r
- \r
+\r
+ ttrUpdated.addResultPart(TreeTestResultTestUtils\r
+ .createSimpleResultPartPassed());\r
+ ttrUpdated.addResultPart(TreeTestResultTestUtils\r
+ .createSimpleResultPartFailed());\r
+ ttrUpdated.addResultPart(TreeTestResultTestUtils\r
+ .createSimpleResultPartError());\r
+\r
testResultDao.update(ttrUpdated);\r
- \r
+\r
// comparison of ttrUpdated and ttrRetrieved\r
TreeTestResult ttrRetrieved = (TreeTestResult) testResultDao\r
- .getTestResult(ttr.getUuid());\r
- \r
+ .getTestResult(ttr.getUuid());\r
+\r
UnitTestTreeUtil.assertTreeTestResult(ttrRetrieved, ttrUpdated);\r
}\r
- \r
+\r
+ public void testMultipleUpdateScenario() throws Exception{\r
+ TreeSRegistry registry = new TreeSRegistry();\r
+\r
+ TreeSPath path = new TreeSPath("/root/test");\r
+ SimpleSElement elem = new SimpleSElement("Unit Test");\r
+ elem.getTags().put("myTag", "myTagValue");\r
+ registry.register(path, elem);\r
+ \r
+ TreeTestResult ttr = createSimpleTreeTestResult();\r
+ ttr.notifyCurrentPath(registry, path);\r
+ ttr.addResultPart(new SimpleResultPart(TestStatus.PASSED,"First test"));\r
+ \r
+ testResultDao.create(ttr);\r
+ \r
+ path = new TreeSPath("/root/test2/subtest");\r
+ elem = new SimpleSElement("Sub Test");\r
+ elem.getTags().put("myTag", "myTagValue");\r
+ registry.register(path, elem);\r
+ \r
+ ttr.notifyCurrentPath(registry, path);\r
+ ttr.addResultPart(new SimpleResultPart(TestStatus.PASSED,"Second test"));\r
+ \r
+ testResultDao.update(ttr);\r
+ \r
+ ttr.notifyCurrentPath(registry, path);\r
+ ttr.addResultPart(new SimpleResultPart(TestStatus.PASSED,"Third test with same path"));\r
+ \r
+ testResultDao.update(ttr);\r
+ \r
+ ttr.close();\r
+ \r
+ testResultDao.close(ttr.getUuid(), ttr.getCloseDate());\r
+ }\r
+\r
@Override\r
protected String getApplicationContextLocation() {\r
return "org/argeo/slc/hibernate/applicationContext.xml";\r
</bean>\r
\r
<bean id="resultLogger"\r
- class="org.argeo.slc.core.test.tree.TreeTestResultLogger"\r
- init-method="init">\r
+ class="org.argeo.slc.core.test.tree.TreeTestResultLogger">\r
</bean>\r
\r
<bean name="testDef"\r