From 05782142e4ce4892aeec2c0c259fc7020e28e9d5 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Tue, 30 Oct 2007 18:12:24 +0000 Subject: [PATCH] Allow overriding of test result and deployed environment in slc test task git-svn-id: https://svn.argeo.org/slc/trunk@676 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../org/argeo/slc/ant/SlcProjectHelper.java | 6 +- .../argeo/slc/ant/structure/SAwareTask.java | 14 ++-- .../org/argeo/slc/ant/test/SlcTestTask.java | 73 +++++++++++++++---- .../argeo/slc/core/test/SimpleTestRun.java | 2 +- .../java/org/argeo/slc/core/test/TestRun.java | 2 + .../argeo/slc/core/test/WritableTestRun.java | 13 ++++ .../slc/example/ExampleDeployedSystem.java | 12 ++- .../argeo/slc/example/appli/ExampleAppli.java | 6 +- org.argeo.slc/src/test/slc/conf/slc.xml | 37 +++++++++- .../slc/root/Category1/SubCategory2/build.xml | 8 ++ 10 files changed, 141 insertions(+), 32 deletions(-) create mode 100644 org.argeo.slc/src/main/java/org/argeo/slc/core/test/WritableTestRun.java diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/ant/SlcProjectHelper.java b/org.argeo.slc/src/main/java/org/argeo/slc/ant/SlcProjectHelper.java index f17e0d5a3..a56a35455 100644 --- a/org.argeo.slc/src/main/java/org/argeo/slc/ant/SlcProjectHelper.java +++ b/org.argeo.slc/src/main/java/org/argeo/slc/ant/SlcProjectHelper.java @@ -7,8 +7,7 @@ import java.util.List; import java.util.Properties; import java.util.Vector; -import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer; -import org.springframework.context.ApplicationContext; +import org.springframework.context.support.AbstractApplicationContext; import org.springframework.context.support.FileSystemXmlApplicationContext; import org.apache.commons.logging.Log; @@ -135,7 +134,8 @@ public class SlcProjectHelper extends ProjectHelperImpl { System.getProperties().putAll(project.getProperties()); String acPath = project .getUserProperty(SlcAntConfig.APPLICATION_CONTEXT_PROPERTY); - ApplicationContext context = new FileSystemXmlApplicationContext(acPath); + AbstractApplicationContext context = new FileSystemXmlApplicationContext(acPath); + context.registerShutdownHook(); project.addReference(REF_ROOT_CONTEXT, context); } diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/ant/structure/SAwareTask.java b/org.argeo.slc/src/main/java/org/argeo/slc/ant/structure/SAwareTask.java index 5bf326c2f..e0bce6731 100644 --- a/org.argeo.slc/src/main/java/org/argeo/slc/ant/structure/SAwareTask.java +++ b/org.argeo.slc/src/main/java/org/argeo/slc/ant/structure/SAwareTask.java @@ -17,9 +17,9 @@ import org.argeo.slc.core.structure.StructureRegistry; import org.argeo.slc.core.structure.tree.TreeSPath; /** Ant task that can be registered within a structure. */ -public abstract class SAwareTask extends AbstractSpringTask implements StructureElement { +public abstract class SAwareTask extends AbstractSpringTask implements + StructureElement { private TreeSPath path; - //private final DefaultTreeSAware sAware = new DefaultTreeSAware(); private final List sAwareArgs = new Vector(); @Override @@ -57,7 +57,7 @@ public abstract class SAwareTask extends AbstractSpringTask implements Structure + targetPath.listChildren(getRegistry()).size()); getRegistry().register(taskPath, this); path = taskPath; - + // notify registered args for (AbstractSpringArg arg : sAwareArgs) { Object obj = arg.getBeanInstance(); @@ -107,13 +107,11 @@ public abstract class SAwareTask extends AbstractSpringTask implements Structure @Override public String getDescription() { String description = super.getDescription(); - if(description==null){ + if (description == null) { return ""; - } - else{ + } else { return description; } } - - + } diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/ant/test/SlcTestTask.java b/org.argeo.slc/src/main/java/org/argeo/slc/ant/test/SlcTestTask.java index 299db2378..93674a012 100644 --- a/org.argeo.slc/src/main/java/org/argeo/slc/ant/test/SlcTestTask.java +++ b/org.argeo.slc/src/main/java/org/argeo/slc/ant/test/SlcTestTask.java @@ -1,54 +1,87 @@ package org.argeo.slc.ant.test; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.apache.tools.ant.BuildException; import org.argeo.slc.ant.SlcAntConfig; import org.argeo.slc.ant.spring.AbstractSpringArg; import org.argeo.slc.ant.structure.SAwareTask; +import org.argeo.slc.core.deploy.DeployedSystem; import org.argeo.slc.core.structure.StructureAware; -import org.argeo.slc.core.test.SimpleTestRun; import org.argeo.slc.core.test.TestData; import org.argeo.slc.core.test.TestDefinition; import org.argeo.slc.core.test.TestResult; +import org.argeo.slc.core.test.WritableTestRun; /** Ant task wrapping a test run. */ public class SlcTestTask extends SAwareTask { + Log log = LogFactory.getLog(SlcTestTask.class); private TestDefinitionArg testDefinitionArg; private TestDataArg testDataArg; + private DeployedSystemArg deployedSystemArg; + private TestResultArg testResultArg; @Override public void executeActions(String mode) throws BuildException { - SimpleTestRun simpleTestRun = (SimpleTestRun) getContext().getBean( + WritableTestRun testRun = (WritableTestRun) getContext().getBean( getProject().getUserProperty( SlcAntConfig.DEFAULT_TEST_RUN_PROPERTY)); + + // set overriden references + if (testDataArg != null){ + testRun.setTestData(testDataArg.getTestData()); + log.trace("Overrides test data"); + } - if (testDataArg != null) - simpleTestRun.setTestData(testDataArg.getTestData()); - if (testDefinitionArg != null) - simpleTestRun.setTestDefinition(testDefinitionArg - .getTestDefinition()); - - TestResult result = simpleTestRun.getTestResult(); - if(result!=null && result instanceof StructureAware){ - ((StructureAware)result).notifyCurrentPath(getRegistry(), getPath()); + if (testDefinitionArg != null){ + testRun.setTestDefinition(testDefinitionArg.getTestDefinition()); + log.trace("Overrides test definition"); } - simpleTestRun.execute(); + if (deployedSystemArg != null){ + testRun.setDeployedSystem(deployedSystemArg.getDeployedSystem()); + log.trace("Overrides deployed system"); + } + + if (testResultArg != null){ + testRun.setTestResult(testResultArg.getTestResult()); + log.trace("Overrides test result"); + } + + // notify path to test result + TestResult result = testRun.getTestResult(); + if (result != null && result instanceof StructureAware) { + ((StructureAware) result).notifyCurrentPath(getRegistry(), + getPath()); + } + + testRun.execute(); } public TestDefinitionArg createTestDefinition() { testDefinitionArg = new TestDefinitionArg(); + // only test definitions can add to path addSAwareArg(testDefinitionArg); return testDefinitionArg; } public TestDataArg createTestData() { testDataArg = new TestDataArg(); - addSAwareArg(testDataArg); return testDataArg; } + public DeployedSystemArg createDeployedSystem() { + deployedSystemArg = new DeployedSystemArg(); + return deployedSystemArg; + } + + public TestResultArg createTestResult() { + testResultArg = new TestResultArg(); + return testResultArg; + } + } class TestDefinitionArg extends AbstractSpringArg { @@ -63,3 +96,17 @@ class TestDataArg extends AbstractSpringArg { } } + +class DeployedSystemArg extends AbstractSpringArg { + public DeployedSystem getDeployedSystem() { + return (DeployedSystem) getBeanInstance(); + } + +} + +class TestResultArg extends AbstractSpringArg { + public TestResult getTestResult() { + return (TestResult) getBeanInstance(); + } + +} diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/test/SimpleTestRun.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/test/SimpleTestRun.java index 33880d4ae..da6e945c4 100644 --- a/org.argeo.slc/src/main/java/org/argeo/slc/core/test/SimpleTestRun.java +++ b/org.argeo.slc/src/main/java/org/argeo/slc/core/test/SimpleTestRun.java @@ -2,7 +2,7 @@ package org.argeo.slc.core.test; import org.argeo.slc.core.deploy.DeployedSystem; -public class SimpleTestRun implements TestRun { +public class SimpleTestRun implements WritableTestRun { private DeployedSystem deployedSystem; private TestData testData; private TestDefinition testDefinition; diff --git a/org.argeo.slc/src/main/java/org/argeo/slc/core/test/TestRun.java b/org.argeo.slc/src/main/java/org/argeo/slc/core/test/TestRun.java index 18260b505..0135b5d84 100644 --- a/org.argeo.slc/src/main/java/org/argeo/slc/core/test/TestRun.java +++ b/org.argeo.slc/src/main/java/org/argeo/slc/core/test/TestRun.java @@ -11,4 +11,6 @@ public interface TestRun { public DeployedSystem getDeployedSystem(); public TestResult getTestResult(); + + public void execute(); } 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 index 000000000..40402df88 --- /dev/null +++ b/org.argeo.slc/src/main/java/org/argeo/slc/core/test/WritableTestRun.java @@ -0,0 +1,13 @@ +package org.argeo.slc.core.test; + +import org.argeo.slc.core.deploy.DeployedSystem; + +public interface WritableTestRun extends TestRun { + public void setDeployedSystem(DeployedSystem deployedSystem); + + public void setTestData(TestData testData); + + public void setTestDefinition(TestDefinition testDefinition); + + public void setTestResult(TestResult testResult); +} diff --git a/org.argeo.slc/src/test/java/org/argeo/slc/example/ExampleDeployedSystem.java b/org.argeo.slc/src/test/java/org/argeo/slc/example/ExampleDeployedSystem.java index 9dbce4c80..388d9b40c 100644 --- a/org.argeo.slc/src/test/java/org/argeo/slc/example/ExampleDeployedSystem.java +++ b/org.argeo.slc/src/test/java/org/argeo/slc/example/ExampleDeployedSystem.java @@ -6,6 +6,7 @@ import org.argeo.slc.example.appli.ExampleAppli; public class ExampleDeployedSystem implements DeployedSystem { private DeployedSystemId deployedSystemId; + private int skipFreq = 2; public DeployedSystemId getDeployedSystemId() { return deployedSystemId; @@ -15,7 +16,14 @@ public class ExampleDeployedSystem implements DeployedSystem { this.deployedSystemId = deployedSystemId; } - public ExampleAppli getExampleAppliInstance(){ - return new ExampleAppli(); + public ExampleAppli getExampleAppliInstance() { + ExampleAppli appli = new ExampleAppli(); + appli.setSkipFreq(skipFreq); + return appli; } + + public void setSkipFreq(int skipFreq) { + this.skipFreq = skipFreq; + } + } diff --git a/org.argeo.slc/src/test/java/org/argeo/slc/example/appli/ExampleAppli.java b/org.argeo.slc/src/test/java/org/argeo/slc/example/appli/ExampleAppli.java index d7f046778..0af5ddbdd 100644 --- a/org.argeo.slc/src/test/java/org/argeo/slc/example/appli/ExampleAppli.java +++ b/org.argeo.slc/src/test/java/org/argeo/slc/example/appli/ExampleAppli.java @@ -6,6 +6,7 @@ import java.io.FileWriter; import java.io.IOException; public class ExampleAppli { + private int skipFreq = 2; public void filter(String[] args) { if (args.length < 2) { @@ -14,7 +15,6 @@ public class ExampleAppli { } String input = args[0]; String output = args[1]; - int skipFreq = 2; if(args.length>2){ skipFreq = Integer.parseInt(args[2]); } @@ -38,4 +38,8 @@ public class ExampleAppli { } } + public void setSkipFreq(int skipFreq) { + this.skipFreq = skipFreq; + } + } diff --git a/org.argeo.slc/src/test/slc/conf/slc.xml b/org.argeo.slc/src/test/slc/conf/slc.xml index b06544d37..104864836 100644 --- a/org.argeo.slc/src/test/slc/conf/slc.xml +++ b/org.argeo.slc/src/test/slc/conf/slc.xml @@ -9,10 +9,6 @@ - - - @@ -24,6 +20,22 @@ + + + + + + + + + + + + + @@ -47,6 +59,7 @@ + @@ -60,4 +73,20 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/org.argeo.slc/src/test/slc/root/Category1/SubCategory2/build.xml b/org.argeo.slc/src/test/slc/root/Category1/SubCategory2/build.xml index 900fa03eb..a33c4b8c6 100644 --- a/org.argeo.slc/src/test/slc/root/Category1/SubCategory2/build.xml +++ b/org.argeo.slc/src/test/slc/root/Category1/SubCategory2/build.xml @@ -20,6 +20,14 @@ + + + + + + + + -- 2.39.2