Pass TestRun to TestDefinition. (API break)
git-svn-id: https://svn.argeo.org/slc/trunk@658
4cfe0d0a-d680-48aa-b62c-
e0a02a3f76cc
\r
import org.argeo.slc.ant.structure.SAwareArg;\r
import org.argeo.slc.ant.structure.SAwareTask;\r
\r
import org.argeo.slc.ant.structure.SAwareArg;\r
import org.argeo.slc.ant.structure.SAwareTask;\r
+import org.argeo.slc.core.deploy.DeployedSystem;\r
import org.argeo.slc.core.test.TestData;\r
import org.argeo.slc.core.test.TestDefinition;\r
import org.argeo.slc.core.test.TestData;\r
import org.argeo.slc.core.test.TestDefinition;\r
+import org.argeo.slc.core.test.TestResult;\r
+import org.argeo.slc.core.test.TestRun;\r
-/** Ant task wrapping a test run.*/\r
-public class SlcTestTask extends SAwareTask {\r
+/** Ant task wrapping a test run. */\r
+public class SlcTestTask extends SAwareTask implements TestRun {\r
\r
private TestDefinitionArg testDefinitionArg;\r
private TestDataArg testDataArg;\r
\r
private TestDefinitionArg testDefinitionArg;\r
private TestDataArg testDataArg;\r
@Override\r
public void executeActions(String mode) throws BuildException {\r
TestDefinition testDefinition = testDefinitionArg.getTestDefinition();\r
@Override\r
public void executeActions(String mode) throws BuildException {\r
TestDefinition testDefinition = testDefinitionArg.getTestDefinition();\r
- testDefinition.setTestData(testDataArg.getTestData());\r
- testDefinition.execute();\r
- } \r
+ testDefinition.execute(this);\r
+ }\r
\r
public TestDefinitionArg createTestDefinition() {\r
testDefinitionArg = new TestDefinitionArg();\r
\r
public TestDefinitionArg createTestDefinition() {\r
testDefinitionArg = new TestDefinitionArg();\r
sAwareArgs.add(testDataArg);\r
return testDataArg;\r
}\r
sAwareArgs.add(testDataArg);\r
return testDataArg;\r
}\r
+\r
+ public DeployedSystem getDeployedSystem() {\r
+ throw new RuntimeException("Not yet implemented.");\r
+ }\r
+\r
+ public TestDefinition geTestDefinition() {\r
+ return testDefinitionArg.getTestDefinition();\r
+ }\r
+\r
+ public TestData getTestData() {\r
+ return testDataArg.getTestData();\r
+ }\r
+\r
+ public TestResult getTestResult() {\r
+ throw new RuntimeException("Not yet implemented.");\r
+ }\r
+\r
}\r
\r
class TestDefinitionArg extends SAwareArg {\r
}\r
\r
class TestDefinitionArg extends SAwareArg {\r
- public TestDefinition getTestDefinition(){\r
- return (TestDefinition)getBeanInstance();\r
+ private TestDefinition testDefinition;\r
+\r
+ public TestDefinition getTestDefinition() {\r
+ if (testDefinition == null) {\r
+ // don't call Spring each time in order not to multi-instantiate\r
+ // prototype\r
+ testDefinition = (TestDefinition) getBeanInstance();\r
+ }\r
+ return testDefinition;\r
}\r
}\r
\r
class TestDataArg extends SAwareArg {\r
}\r
}\r
\r
class TestDataArg extends SAwareArg {\r
- public TestData getTestData(){\r
- return (TestData)getBeanInstance();\r
+ private TestData testData;\r
+\r
+ public TestData getTestData() {\r
+ if (testData == null) {\r
+ // don't call Spring each time in order not to multi-instantiate\r
+ // prototype\r
+ testData = (TestData) getBeanInstance();\r
+ }\r
+ return testData;\r
--- /dev/null
+package org.argeo.slc.core.build;\r
+\r
+/** The id uniquely identifying the distribution of a software system. */\r
+public interface DistributionId {\r
+\r
+}\r
--- /dev/null
+package org.argeo.slc.core.deploy;\r
+\r
+/** An instance of a software system.*/\r
+public interface DeployedSystem {\r
+ public DeployedSystemId getDeployedSystemId();\r
+}\r
--- /dev/null
+package org.argeo.slc.core.deploy;\r
+\r
+import org.argeo.slc.core.build.DistributionId;\r
+\r
+/** The id uniquely identifying a deployed system.*/\r
+public interface DeployedSystemId {\r
+ public DistributionId getDistributionId();\r
+}\r
package org.argeo.slc.core.test;\r
\r
/**\r
package org.argeo.slc.core.test;\r
\r
/**\r
- * The programmatic definition of a test, which will be associated with test\r
- * data within a test run.\r
+ * The programmatic definition of a test, which will be associated with\r
+ * transient objects within a test run.\r
*/\r
public interface TestDefinition {\r
*/\r
public interface TestDefinition {\r
- /** Perform the test. */\r
- public void execute();\r
-\r
- /** Initialize the test data */\r
- public void setTestData(TestData testData);\r
+ /** Performs the test. */\r
+ public void execute(TestRun testRun);\r
package org.argeo.slc.core.test;\r
\r
package org.argeo.slc.core.test;\r
\r
-/** The result of a test (<b>NOT YET IMPLEMENTED</b>)*/\r
+/** The result of a test */\r
public interface TestResult {\r
public interface TestResult {\r
+ public TestResultId geTestResultId();\r
--- /dev/null
+package org.argeo.slc.core.test;\r
+\r
+import org.argeo.slc.core.deploy.DeployedSystemId;\r
+\r
+/** The unique id referencing a test result.*/\r
+public interface TestResultId {\r
+ public DeployedSystemId getDeployedSystemId();\r
+}\r
package org.argeo.slc.core.test;\r
\r
package org.argeo.slc.core.test;\r
\r
-/** The actual run of a test (<b>NOT YET IMPLEMENTED</b>)*/\r
+import org.argeo.slc.core.deploy.DeployedSystem;\r
+\r
+/** The actual run of a test */\r
public interface TestRun {\r
public interface TestRun {\r
+ public TestDefinition geTestDefinition();\r
+\r
+ public TestData getTestData();\r
+\r
+ public DeployedSystem getDeployedSystem();\r
+ public TestResult getTestResult();\r
package org.argeo.slc.testslc;\r
\r
import org.argeo.slc.core.test.IncompatibleTestDataException;\r
package org.argeo.slc.testslc;\r
\r
import org.argeo.slc.core.test.IncompatibleTestDataException;\r
-import org.argeo.slc.core.test.TestData;\r
import org.argeo.slc.core.test.TestDefinition;\r
import org.argeo.slc.core.test.TestDefinition;\r
+import org.argeo.slc.core.test.TestRun;\r
\r
public class DummyTestDefinition implements TestDefinition {\r
\r
public class DummyTestDefinition implements TestDefinition {\r
- private DummyTestData testData;\r
- public void execute() {\r
+ public void execute(TestRun testRun) {\r
+ if (!(testRun.getTestData() instanceof DummyTestData)) {\r
+ throw new IncompatibleTestDataException(testRun.getTestData(), this);\r
+ }\r
+ DummyTestData testData = (DummyTestData) testRun.getTestData();\r
+\r
if (testData.getReached().equals(testData.getExpected())) {\r
stdOut("Test passed");\r
} else {\r
if (testData.getReached().equals(testData.getExpected())) {\r
stdOut("Test passed");\r
} else {\r
- public void setTestData(TestData testData) {\r
- if (!(testData instanceof DummyTestData)) {\r
- throw new IncompatibleTestDataException(testData, this);\r
- }\r
- this.testData = (DummyTestData) testData;\r
- }\r
-\r
private static void stdOut(Object o) {\r
System.out.println(o);\r
}\r
private static void stdOut(Object o) {\r
System.out.println(o);\r
}\r