You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by dh...@apache.org on 2014/06/27 01:37:03 UTC
git commit: Updated API component framework to generate test classes
in the component's package,
added abstract base class for tests to create component,
added assertNotNull for results
Repository: camel
Updated Branches:
refs/heads/master 73f067e61 -> 18573971a
Updated API component framework to generate test classes in the component's package, added abstract base class for tests to create component, added assertNotNull for results
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/18573971
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/18573971
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/18573971
Branch: refs/heads/master
Commit: 18573971a767350d86696367cbf48183de3ff221
Parents: 73f067e
Author: Dhiraj Bokde <dh...@yahoo.com>
Authored: Thu Jun 26 16:36:14 2014 -0700
Committer: Dhiraj Bokde <dh...@yahoo.com>
Committed: Thu Jun 26 16:36:52 2014 -0700
----------------------------------------------------------------------
.../META-INF/maven/archetype-metadata.xml | 6 ++
.../test/java/Abstract__name__TestSupport.java | 71 ++++++++++++++++++++
.../src/test/resources/test-options.properties | 1 +
.../src/it/all-it/pom.xml | 3 +-
.../maven/AbstractApiMethodGeneratorMojo.java | 3 +-
.../src/main/resources/api-route-test.vm | 19 +++---
.../component/test/AbstractTestTestSupport.java | 31 +++++++++
7 files changed, 121 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/18573971/tooling/archetypes/camel-archetype-api-component/src/main/resources-filtered/META-INF/maven/archetype-metadata.xml
----------------------------------------------------------------------
diff --git a/tooling/archetypes/camel-archetype-api-component/src/main/resources-filtered/META-INF/maven/archetype-metadata.xml b/tooling/archetypes/camel-archetype-api-component/src/main/resources-filtered/META-INF/maven/archetype-metadata.xml
index 935370b..134af47 100644
--- a/tooling/archetypes/camel-archetype-api-component/src/main/resources-filtered/META-INF/maven/archetype-metadata.xml
+++ b/tooling/archetypes/camel-archetype-api-component/src/main/resources-filtered/META-INF/maven/archetype-metadata.xml
@@ -81,6 +81,12 @@
<include>**/*</include>
</includes>
</fileSet>
+ <fileSet filtered="true" packaged="true" encoding="UTF-8">
+ <directory>__artifactId__-component/src/test/java</directory>
+ <includes>
+ <include>**/*.java</include>
+ </includes>
+ </fileSet>
<fileSet filtered="true" encoding="UTF-8">
<directory>__artifactId__-component/src/test/resources</directory>
<includes>
http://git-wip-us.apache.org/repos/asf/camel/blob/18573971/tooling/archetypes/camel-archetype-api-component/src/main/resources/archetype-resources/__artifactId__-component/src/test/java/Abstract__name__TestSupport.java
----------------------------------------------------------------------
diff --git a/tooling/archetypes/camel-archetype-api-component/src/main/resources/archetype-resources/__artifactId__-component/src/test/java/Abstract__name__TestSupport.java b/tooling/archetypes/camel-archetype-api-component/src/main/resources/archetype-resources/__artifactId__-component/src/test/java/Abstract__name__TestSupport.java
new file mode 100644
index 0000000..0ad30f9
--- /dev/null
+++ b/tooling/archetypes/camel-archetype-api-component/src/main/resources/archetype-resources/__artifactId__-component/src/test/java/Abstract__name__TestSupport.java
@@ -0,0 +1,71 @@
+## ------------------------------------------------------------------------
+## Licensed to the Apache Software Foundation (ASF) under one or more
+## contributor license agreements. See the NOTICE file distributed with
+## this work for additional information regarding copyright ownership.
+## The ASF licenses this file to You under the Apache License, Version 2.0
+## (the "License"); you may not use this file except in compliance with
+## the License. You may obtain a copy of the License at
+##
+## http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+## ------------------------------------------------------------------------
+package ${package};
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.apache.camel.util.IntrospectionSupport;
+
+/**
+ * Abstract base class for ${name} Integration tests generated by Camel API component maven plugin.
+ */
+public class Abstract${name}TestSupport extends CamelTestSupport {
+
+ private static final String TEST_OPTIONS_PROPERTIES = "/test-options.properties";
+
+ @Override
+ protected CamelContext createCamelContext() throws Exception {
+
+ final CamelContext context = super.createCamelContext();
+
+ // read ${name} component configuration from TEST_OPTIONS_PROPERTIES
+ final Properties properties = new Properties();
+ try {
+ properties.load(getClass().getResourceAsStream(TEST_OPTIONS_PROPERTIES));
+ } catch (Exception e) {
+ throw new IOException(String.format("%s could not be loaded: %s", TEST_OPTIONS_PROPERTIES, e.getMessage()),
+ e);
+ }
+
+ Map<String, Object> options = new HashMap<String, Object>();
+ for (Map.Entry<Object, Object> entry : properties.entrySet()) {
+ options.put(entry.getKey().toString(), entry.getValue());
+ }
+
+ final ${name}Configuration configuration = new ${name}Configuration();
+ IntrospectionSupport.setProperties(configuration, options);
+
+ // add ${name}Component to Camel context
+ final ${name}Component component = new ${name}Component(context);
+ component.setConfiguration(configuration);
+ context.addComponent("${scheme}", component);
+
+ return context;
+ }
+
+ @Override
+ public boolean isCreateCamelContextPerClass() {
+ // only create the context once for this class
+ return true;
+ }
+}
http://git-wip-us.apache.org/repos/asf/camel/blob/18573971/tooling/archetypes/camel-archetype-api-component/src/main/resources/archetype-resources/__artifactId__-component/src/test/resources/test-options.properties
----------------------------------------------------------------------
diff --git a/tooling/archetypes/camel-archetype-api-component/src/main/resources/archetype-resources/__artifactId__-component/src/test/resources/test-options.properties b/tooling/archetypes/camel-archetype-api-component/src/main/resources/archetype-resources/__artifactId__-component/src/test/resources/test-options.properties
new file mode 100644
index 0000000..b38298a
--- /dev/null
+++ b/tooling/archetypes/camel-archetype-api-component/src/main/resources/archetype-resources/__artifactId__-component/src/test/resources/test-options.properties
@@ -0,0 +1 @@
+## TODO provide test values for ${name} configuration properties
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/18573971/tooling/maven/camel-api-component-maven-plugin/src/it/all-it/pom.xml
----------------------------------------------------------------------
diff --git a/tooling/maven/camel-api-component-maven-plugin/src/it/all-it/pom.xml b/tooling/maven/camel-api-component-maven-plugin/src/it/all-it/pom.xml
index 9295755..369f65b 100644
--- a/tooling/maven/camel-api-component-maven-plugin/src/it/all-it/pom.xml
+++ b/tooling/maven/camel-api-component-maven-plugin/src/it/all-it/pom.xml
@@ -57,7 +57,8 @@
<groupId>org.apache.camel</groupId>
<artifactId>camel-test</artifactId>
<version>@project.version@</version>
- <scope>test</scope>
+ <!-- compile scope to avoid having to move AbstractTestTestSupport to src/test/java -->
+ <scope>compile</scope>
</dependency>
</dependencies>
http://git-wip-us.apache.org/repos/asf/camel/blob/18573971/tooling/maven/camel-api-component-maven-plugin/src/main/java/org/apache/camel/maven/AbstractApiMethodGeneratorMojo.java
----------------------------------------------------------------------
diff --git a/tooling/maven/camel-api-component-maven-plugin/src/main/java/org/apache/camel/maven/AbstractApiMethodGeneratorMojo.java b/tooling/maven/camel-api-component-maven-plugin/src/main/java/org/apache/camel/maven/AbstractApiMethodGeneratorMojo.java
index 3881d84..6ddb5b6 100644
--- a/tooling/maven/camel-api-component-maven-plugin/src/main/java/org/apache/camel/maven/AbstractApiMethodGeneratorMojo.java
+++ b/tooling/maven/camel-api-component-maven-plugin/src/main/java/org/apache/camel/maven/AbstractApiMethodGeneratorMojo.java
@@ -124,6 +124,7 @@ public abstract class AbstractApiMethodGeneratorMojo extends AbstractApiMethodBa
VelocityContext context = getCommonContext(models);
context.put("testName", getUnitTestName());
context.put("scheme", scheme);
+ context.put("componentPackage", componentPackage);
context.put("componentName", componentName);
context.put("enumName", getEnumName());
return context;
@@ -131,7 +132,7 @@ public abstract class AbstractApiMethodGeneratorMojo extends AbstractApiMethodBa
private String getTestFilePath() throws MojoExecutionException {
final StringBuilder fileName = new StringBuilder();
- fileName.append(outPackage.replaceAll("\\.", File.separator)).append(File.separator);
+ fileName.append(componentPackage.replaceAll("\\.", File.separator)).append(File.separator);
fileName.append(getUnitTestName()).append(".java");
return fileName.toString();
}
http://git-wip-us.apache.org/repos/asf/camel/blob/18573971/tooling/maven/camel-api-component-maven-plugin/src/main/resources/api-route-test.vm
----------------------------------------------------------------------
diff --git a/tooling/maven/camel-api-component-maven-plugin/src/main/resources/api-route-test.vm b/tooling/maven/camel-api-component-maven-plugin/src/main/resources/api-route-test.vm
index bf71e7f..15f0cf9 100644
--- a/tooling/maven/camel-api-component-maven-plugin/src/main/resources/api-route-test.vm
+++ b/tooling/maven/camel-api-component-maven-plugin/src/main/resources/api-route-test.vm
@@ -19,24 +19,26 @@
* Camel Api Route test generated by camel-component-util-maven-plugin
* Generated on: $generatedDate
*/
-package $packageName;
+package $componentPackage;
import java.util.HashMap;
import java.util.Map;
import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.test.junit4.CamelTestSupport;
import org.junit.Ignore;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import ${packageName}.${componentName}ApiCollection;
+import ${packageName}.${enumName};
+
/**
* Test class for $proxyType.Name APIs.
* TODO Move the file to src/test/java, populate parameter values, and remove @Ignore annotations.
* The class source won't be generated again if the generator MOJO finds it under src/test/java.
*/
-public class ${testName} extends CamelTestSupport {
+public class ${testName} extends Abstract${componentName}TestSupport {
private static final Logger LOG = LoggerFactory.getLogger(${testName}.class);
private static final String PATH_PREFIX = ${componentName}ApiCollection.getCollection().getApiName(${enumName}.class).getName();
@@ -68,6 +70,7 @@ public class ${testName} extends CamelTestSupport {
headers.put("${helper.getExchangePropertyPrefix()}${arg.Name}", $helper.getDefaultArgValue($arg.Type));
#end
#end
+
#end
## method invocation result
#if ( !$voidResult )#set ( $type = $helper.getResultDeclaration($resultType) )$type result = (${type})#end
@@ -81,8 +84,8 @@ template().requestBody("direct://${model.UniqueName}", (${helper.getCanonicalNam
template().requestBodyAndHeaders("direct://${model.UniqueName}", null, headers);
#end
#if ( !$voidResult )
-
- LOG.debug("${model.Name} :" + result);
+ assertNotNull("${model.Name} result", result);
+ LOG.debug("${model.Name}: " + result);
#end
}
@@ -101,10 +104,4 @@ template().requestBodyAndHeaders("direct://${model.UniqueName}", null, headers);
}
};
}
-
- @Override
- public boolean isCreateCamelContextPerClass() {
- // only create the context once for this class
- return true;
- }
}
http://git-wip-us.apache.org/repos/asf/camel/blob/18573971/tooling/maven/camel-api-component-maven-plugin/src/test/java/org/apache/camel/component/test/AbstractTestTestSupport.java
----------------------------------------------------------------------
diff --git a/tooling/maven/camel-api-component-maven-plugin/src/test/java/org/apache/camel/component/test/AbstractTestTestSupport.java b/tooling/maven/camel-api-component-maven-plugin/src/test/java/org/apache/camel/component/test/AbstractTestTestSupport.java
new file mode 100644
index 0000000..f4de882
--- /dev/null
+++ b/tooling/maven/camel-api-component-maven-plugin/src/test/java/org/apache/camel/component/test/AbstractTestTestSupport.java
@@ -0,0 +1,31 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.test;
+
+import org.apache.camel.test.junit4.CamelTestSupport;
+
+/**
+ * Dummy TestSupport class.
+ */
+public class AbstractTestTestSupport extends CamelTestSupport {
+
+ @Override
+ public boolean isCreateCamelContextPerClass() {
+ // only create the context once for this class
+ return true;
+ }
+}