Allow overriding of test result and deployed environment in slc test task
authorMathieu Baudier <mbaudier@argeo.org>
Tue, 30 Oct 2007 18:12:24 +0000 (18:12 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Tue, 30 Oct 2007 18:12:24 +0000 (18:12 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@676 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

org.argeo.slc/src/main/java/org/argeo/slc/ant/SlcProjectHelper.java
org.argeo.slc/src/main/java/org/argeo/slc/ant/structure/SAwareTask.java
org.argeo.slc/src/main/java/org/argeo/slc/ant/test/SlcTestTask.java
org.argeo.slc/src/main/java/org/argeo/slc/core/test/SimpleTestRun.java
org.argeo.slc/src/main/java/org/argeo/slc/core/test/TestRun.java
org.argeo.slc/src/main/java/org/argeo/slc/core/test/WritableTestRun.java [new file with mode: 0644]
org.argeo.slc/src/test/java/org/argeo/slc/example/ExampleDeployedSystem.java
org.argeo.slc/src/test/java/org/argeo/slc/example/appli/ExampleAppli.java
org.argeo.slc/src/test/slc/conf/slc.xml
org.argeo.slc/src/test/slc/root/Category1/SubCategory2/build.xml

index f17e0d5a3bbf5ead5ca98a69a7a4f6047fb55cac..a56a35455f4ca687fff236550f3bf45f48324d82 100644 (file)
@@ -7,8 +7,7 @@ import java.util.List;
 import java.util.Properties;\r
 import java.util.Vector;\r
 \r
-import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;\r
-import org.springframework.context.ApplicationContext;\r
+import org.springframework.context.support.AbstractApplicationContext;\r
 import org.springframework.context.support.FileSystemXmlApplicationContext;\r
 \r
 import org.apache.commons.logging.Log;\r
@@ -135,7 +134,8 @@ public class SlcProjectHelper extends ProjectHelperImpl {
                System.getProperties().putAll(project.getProperties());\r
                String acPath = project\r
                                .getUserProperty(SlcAntConfig.APPLICATION_CONTEXT_PROPERTY);\r
-               ApplicationContext context = new FileSystemXmlApplicationContext(acPath);\r
+               AbstractApplicationContext context = new FileSystemXmlApplicationContext(acPath);\r
+               context.registerShutdownHook();\r
                project.addReference(REF_ROOT_CONTEXT, context);\r
        }\r
 \r
index 5bf326c2f987958ea4ddbf0c866a112ad51c3e34..e0bce6731b818cb5345fe60178abbbaf7f9a1f78 100644 (file)
@@ -17,9 +17,9 @@ import org.argeo.slc.core.structure.StructureRegistry;
 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 StructureElement {\r
+public abstract class SAwareTask extends AbstractSpringTask implements\r
+               StructureElement {\r
        private TreeSPath path;\r
-       //private final DefaultTreeSAware sAware = new DefaultTreeSAware();\r
        private final List<AbstractSpringArg> sAwareArgs = new Vector<AbstractSpringArg>();\r
 \r
        @Override\r
@@ -57,7 +57,7 @@ public abstract class SAwareTask extends AbstractSpringTask implements Structure
                                + targetPath.listChildren(getRegistry()).size());\r
                getRegistry().register(taskPath, this);\r
                path = taskPath;\r
-               \r
+\r
                // notify registered args\r
                for (AbstractSpringArg arg : sAwareArgs) {\r
                        Object obj = arg.getBeanInstance();\r
@@ -107,13 +107,11 @@ public abstract class SAwareTask extends AbstractSpringTask implements Structure
        @Override\r
        public String getDescription() {\r
                String description = super.getDescription();\r
-               if(description==null){\r
+               if (description == null) {\r
                        return "<no task def>";\r
-               }\r
-               else{\r
+               } else {\r
                        return description;\r
                }\r
        }\r
-       \r
-       \r
+\r
 }\r
index 299db2378859a0cf2c45dbc67e036858e8163dae..93674a01295cee24e8e98f333cbc44c469401dbe 100644 (file)
@@ -1,54 +1,87 @@
 package org.argeo.slc.ant.test;\r
 \r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
 import org.apache.tools.ant.BuildException;\r
 \r
 import org.argeo.slc.ant.SlcAntConfig;\r
 import org.argeo.slc.ant.spring.AbstractSpringArg;\r
 import org.argeo.slc.ant.structure.SAwareTask;\r
+import org.argeo.slc.core.deploy.DeployedSystem;\r
 import org.argeo.slc.core.structure.StructureAware;\r
-import org.argeo.slc.core.test.SimpleTestRun;\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.WritableTestRun;\r
 \r
 /** Ant task wrapping a test run. */\r
 public class SlcTestTask extends SAwareTask {\r
+       Log log = LogFactory.getLog(SlcTestTask.class);\r
 \r
        private TestDefinitionArg testDefinitionArg;\r
        private TestDataArg testDataArg;\r
+       private DeployedSystemArg deployedSystemArg;\r
+       private TestResultArg testResultArg;\r
 \r
        @Override\r
        public void executeActions(String mode) throws BuildException {\r
-               SimpleTestRun simpleTestRun = (SimpleTestRun) getContext().getBean(\r
+               WritableTestRun testRun = (WritableTestRun) getContext().getBean(\r
                                getProject().getUserProperty(\r
                                                SlcAntConfig.DEFAULT_TEST_RUN_PROPERTY));\r
+\r
+               // set overriden references\r
+               if (testDataArg != null){\r
+                       testRun.setTestData(testDataArg.getTestData());\r
+                       log.trace("Overrides test data");\r
+               }\r
                \r
-               if (testDataArg != null)\r
-                       simpleTestRun.setTestData(testDataArg.getTestData());\r
-               if (testDefinitionArg != null)\r
-                       simpleTestRun.setTestDefinition(testDefinitionArg\r
-                                       .getTestDefinition());\r
-\r
-               TestResult result = simpleTestRun.getTestResult();\r
-               if(result!=null && result instanceof StructureAware){\r
-                       ((StructureAware)result).notifyCurrentPath(getRegistry(), getPath());\r
+               if (testDefinitionArg != null){\r
+                       testRun.setTestDefinition(testDefinitionArg.getTestDefinition());\r
+                       log.trace("Overrides test definition");\r
                }\r
                \r
-               simpleTestRun.execute();\r
+               if (deployedSystemArg != null){\r
+                       testRun.setDeployedSystem(deployedSystemArg.getDeployedSystem());\r
+                       log.trace("Overrides deployed system");\r
+               }\r
+               \r
+               if (testResultArg != null){\r
+                       testRun.setTestResult(testResultArg.getTestResult());\r
+                       log.trace("Overrides test result");\r
+               }\r
+\r
+               // notify path to test result\r
+               TestResult result = testRun.getTestResult();\r
+               if (result != null && result instanceof StructureAware) {\r
+                       ((StructureAware) result).notifyCurrentPath(getRegistry(),\r
+                                       getPath());\r
+               }\r
+\r
+               testRun.execute();\r
        }\r
 \r
        public TestDefinitionArg createTestDefinition() {\r
                testDefinitionArg = new TestDefinitionArg();\r
+               // only test definitions can add to path\r
                addSAwareArg(testDefinitionArg);\r
                return testDefinitionArg;\r
        }\r
 \r
        public TestDataArg createTestData() {\r
                testDataArg = new TestDataArg();\r
-               addSAwareArg(testDataArg);\r
                return testDataArg;\r
        }\r
 \r
+       public DeployedSystemArg createDeployedSystem() {\r
+               deployedSystemArg = new DeployedSystemArg();\r
+               return deployedSystemArg;\r
+       }\r
+\r
+       public TestResultArg createTestResult() {\r
+               testResultArg = new TestResultArg();\r
+               return testResultArg;\r
+       }\r
+\r
 }\r
 \r
 class TestDefinitionArg extends AbstractSpringArg {\r
@@ -63,3 +96,17 @@ class TestDataArg extends AbstractSpringArg {
        }\r
 \r
 }\r
+\r
+class DeployedSystemArg extends AbstractSpringArg {\r
+       public DeployedSystem getDeployedSystem() {\r
+               return (DeployedSystem) getBeanInstance();\r
+       }\r
+\r
+}\r
+\r
+class TestResultArg extends AbstractSpringArg {\r
+       public TestResult getTestResult() {\r
+               return (TestResult) getBeanInstance();\r
+       }\r
+\r
+}\r
index 33880d4ae3b366ab34f9b5ba47e9dc0de623f0bd..da6e945c49328774a3bcbec568b96743dab6e88d 100644 (file)
@@ -2,7 +2,7 @@ package org.argeo.slc.core.test;
 \r
 import org.argeo.slc.core.deploy.DeployedSystem;\r
 \r
-public class SimpleTestRun implements TestRun {\r
+public class SimpleTestRun implements WritableTestRun {\r
        private DeployedSystem deployedSystem;\r
        private TestData testData;\r
        private TestDefinition testDefinition;\r
index 18260b50543431cb0f7bdec7b07dac55bdba4eba..0135b5d84ac496ad2fe269593904ee00de8f5383 100644 (file)
@@ -11,4 +11,6 @@ public interface TestRun {
        public DeployedSystem getDeployedSystem();\r
 \r
        public TestResult getTestResult();\r
+       \r
+       public void execute();\r
 }\r
diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/test/WritableTestRun.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/test/WritableTestRun.java
new file mode 100644 (file)
index 0000000..40402df
--- /dev/null
@@ -0,0 +1,13 @@
+package org.argeo.slc.core.test;\r
+\r
+import org.argeo.slc.core.deploy.DeployedSystem;\r
+\r
+public interface WritableTestRun extends TestRun {\r
+       public void setDeployedSystem(DeployedSystem deployedSystem);\r
+\r
+       public void setTestData(TestData testData);\r
+\r
+       public void setTestDefinition(TestDefinition testDefinition);\r
+\r
+       public void setTestResult(TestResult testResult);\r
+}\r
index 9dbce4c804031216973cdc0d15935e3111df22a0..388d9b40c2a11929832d45f731bb72a7497badca 100644 (file)
@@ -6,6 +6,7 @@ import org.argeo.slc.example.appli.ExampleAppli;
 \r
 public class ExampleDeployedSystem implements DeployedSystem {\r
        private DeployedSystemId deployedSystemId;\r
+       private int skipFreq = 2;\r
 \r
        public DeployedSystemId getDeployedSystemId() {\r
                return deployedSystemId;\r
@@ -15,7 +16,14 @@ public class ExampleDeployedSystem implements DeployedSystem {
                this.deployedSystemId = deployedSystemId;\r
        }\r
 \r
-       public ExampleAppli getExampleAppliInstance(){\r
-               return new ExampleAppli();\r
+       public ExampleAppli getExampleAppliInstance() {\r
+               ExampleAppli appli = new ExampleAppli();\r
+               appli.setSkipFreq(skipFreq);\r
+               return appli;\r
        }\r
+\r
+       public void setSkipFreq(int skipFreq) {\r
+               this.skipFreq = skipFreq;\r
+       }\r
+\r
 }\r
index d7f04677827bb6d4e9e2141c4114e85de15b9364..0af5ddbdd2135d9266476816e1956fc0eb287faf 100644 (file)
@@ -6,6 +6,7 @@ import java.io.FileWriter;
 import java.io.IOException;\r
 \r
 public class ExampleAppli {\r
+       private int skipFreq = 2;\r
 \r
        public void filter(String[] args) {\r
                if (args.length < 2) {\r
@@ -14,7 +15,6 @@ public class ExampleAppli {
                }\r
                String input = args[0];\r
                String output = args[1];\r
-               int skipFreq = 2;\r
                if(args.length>2){\r
                        skipFreq = Integer.parseInt(args[2]);\r
                }\r
@@ -38,4 +38,8 @@ public class ExampleAppli {
                }\r
        }\r
 \r
+       public void setSkipFreq(int skipFreq) {\r
+               this.skipFreq = skipFreq;\r
+       }\r
+\r
 }\r
index b06544d3776a4aba6522003d7a64589e52892a0d..104864836bc7754718723382967935d8645829ff 100644 (file)
@@ -9,10 +9,6 @@
                <property name="deployedSystem" ref="exampleDeployedSystem" />\r
        </bean>\r
 \r
-       <bean id="testResultId" class="org.argeo.slc.core.test.NumericTRId"\r
-               init-method="init">\r
-       </bean>\r
-\r
        <bean id="testResult"\r
                class="org.argeo.slc.core.test.tree.TreeTestResult">\r
                <property name="numericResultId" ref="testResultId" />\r
                </property>\r
        </bean>\r
 \r
+       <bean id="testResult2"\r
+               class="org.argeo.slc.core.test.tree.TreeTestResult"\r
+               destroy-method="close">\r
+               <property name="numericResultId" ref="testResultId" />\r
+               <property name="listeners">\r
+                       <list>\r
+                               <ref bean="resultLogger" />\r
+                               <ref bean="resultPersister" />\r
+                       </list>\r
+               </property>\r
+       </bean>\r
+\r
+       <bean id="testResultId" class="org.argeo.slc.core.test.NumericTRId"\r
+               init-method="init" scope="prototype">\r
+       </bean>\r
+\r
        <bean\r
                class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" />\r
 \r
@@ -47,6 +59,7 @@
 \r
        <bean id="exampleDeployedSystem"\r
                class="org.argeo.slc.example.ExampleDeployedSystem">\r
+               <property name="skipFreq" value="2"/>\r
                <property name="deployedSystemId">\r
                        <bean class="org.argeo.slc.core.deploy.NumericDSId">\r
                                <property name="value" value="123456" />\r
                </property>\r
        </bean>\r
 \r
+       <bean id="exampleDeployedSystem2"\r
+               class="org.argeo.slc.example.ExampleDeployedSystem">\r
+               <property name="skipFreq" value="3"/>\r
+               <property name="deployedSystemId">\r
+                       <bean class="org.argeo.slc.core.deploy.NumericDSId">\r
+                               <property name="value" value="654321" />\r
+                               <property name="distributionId">\r
+                                       <bean\r
+                                               class="org.argeo.slc.core.build.VersionDistributionId">\r
+                                               <property name="versionString" value="0.3.1" />\r
+                                       </bean>\r
+                               </property>\r
+                       </bean>\r
+               </property>\r
+       </bean>\r
+\r
 </beans>
\ No newline at end of file
index 900fa03ebf41bd8c04ebf81676375d226dcaad77..a33c4b8c6e497a8037949adfcc8587d489d0af0c 100644 (file)
                        <testDefinition bean="simpleExampleTestDef" />\r
                        <testData bean="testData.eu-reform" />\r
                </slc.test>\r
+               \r
+               <slc.test description="Distinct test">\r
+                       <testDefinition bean="simpleExampleTestDef" />\r
+                       <testData bean="testData.eu-reform" />\r
+                       <deployedSystem bean="exampleDeployedSystem2"/>\r
+                       <testResult bean="testResult2"/>\r
+               </slc.test>\r
+\r
        </target>\r
 \r
        <target name="testComplex" description="A complex test">\r