This is an automated email from the ASF dual-hosted git repository. valdar pushed a commit to branch kamelets in repository https://gitbox.apache.org/repos/asf/camel-kafka-connector.git
The following commit(s) were added to refs/heads/kamelets by this push: new e129129 Related to #423 added generator plugin testing. e129129 is described below commit e129129bdbf1efada7904241a82e930466191efe Author: Andrea Tarocchi <andrea.taroc...@gmail.com> AuthorDate: Sun Aug 29 21:55:37 2021 +0200 Related to #423 added generator plugin testing. --- .../apache/camel/kafkaconnector/CamelSinkTask.java | 2 - .../camel/kafkaconnector/CamelSourceTask.java | 1 - .../ROOT/pages/contributor-guide/testing.adoc | 12 +++++ parent/pom.xml | 9 ++++ .../pom.xml | 34 +++++++++++- .../CamelKafkaConnectorKameletUpdateMojo.java | 6 +-- ...mel-kafka-connector-fix-dependencies.properties | 8 +-- ...a-connector-kamelet-fix-dependencies.properties | 8 ++- .../maven/GenerateCamelKafkaConnectorsMojoIT.java | 24 +++++++++ .../{test_generate => maven_project}/pom.xml | 63 +++++++++++++++++++++- .../resources/template-connecotr-kamelet-pom.xml | 4 +- .../src/test/resources/template-connector-pom.xml | 4 +- tooling/pom.xml | 1 - 13 files changed, 152 insertions(+), 24 deletions(-) diff --git a/core/src/main/java/org/apache/camel/kafkaconnector/CamelSinkTask.java b/core/src/main/java/org/apache/camel/kafkaconnector/CamelSinkTask.java index b1dbf17..e4430fc 100644 --- a/core/src/main/java/org/apache/camel/kafkaconnector/CamelSinkTask.java +++ b/core/src/main/java/org/apache/camel/kafkaconnector/CamelSinkTask.java @@ -38,7 +38,6 @@ import org.apache.kafka.connect.header.Header; import org.apache.kafka.connect.sink.ErrantRecordReporter; import org.apache.kafka.connect.sink.SinkRecord; import org.apache.kafka.connect.sink.SinkTask; -import org.jetbrains.annotations.NotNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -157,7 +156,6 @@ public class CamelSinkTask extends SinkTask { } } - @NotNull protected String getSinkKamelet() { return DEFAULT_KAMELET_CKC_SINK; } diff --git a/core/src/main/java/org/apache/camel/kafkaconnector/CamelSourceTask.java b/core/src/main/java/org/apache/camel/kafkaconnector/CamelSourceTask.java index 5c63323..55d3395 100644 --- a/core/src/main/java/org/apache/camel/kafkaconnector/CamelSourceTask.java +++ b/core/src/main/java/org/apache/camel/kafkaconnector/CamelSourceTask.java @@ -182,7 +182,6 @@ public class CamelSourceTask extends SourceTask { } } - @NotNull protected String getSourceKamelet() { return DEFAULT_KAMELET_CKC_SOURCE; } diff --git a/docs/modules/ROOT/pages/contributor-guide/testing.adoc b/docs/modules/ROOT/pages/contributor-guide/testing.adoc index 9b87a62..1bb2fbd 100644 --- a/docs/modules/ROOT/pages/contributor-guide/testing.adoc +++ b/docs/modules/ROOT/pages/contributor-guide/testing.adoc @@ -6,6 +6,7 @@ * <<running-the-tests,Running The Tests>> * <<writing-new-tests,Writing New Tests>> +* <<running-generator-plugin-tests,Running Maven Generator Plugin tests>> [#running-the-tests] == Running The Tests @@ -219,3 +220,14 @@ Kafka's Connect own runtime libraries. The test code should avoid printing data to the stdout. Instead, the default project logger should be used. Every connector module has its own log file. Tests for new connectors should ensure that the relevant information is logged. + +[#running-generator-plugin-tests] +== Running Maven Generator Plugin tests +In order to run tests for `tooling/camel-kafka-generator-maven-plugin` please run: + +[source,bash] +---- +$ ./mvnw clean install -pl :camel-kafka-connector-generator-maven-plugin -am -Pmaven-it +---- + +this can be useful during adjustments or new features development of `tooling/camel-kafka-generator-maven-plugin`. \ No newline at end of file diff --git a/parent/pom.xml b/parent/pom.xml index d7c1b32..9dc35d2 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -30,6 +30,7 @@ <kafka.version>2.8.0</kafka.version> <camel.version>3.11.1</camel.version> <camel.kamelet.catalog.version>0.3.0</camel.kamelet.catalog.version> + <camel.k.runtime.version>1.8.0</camel.k.runtime.version> <apicurio.registry.version>1.3.2.Final</apicurio.registry.version> <resteasy.version>4.5.6.Final</resteasy.version> <version.java>1.8</version.java> @@ -118,6 +119,14 @@ </dependency> <dependency> + <groupId>org.apache.camel.k</groupId> + <artifactId>camel-k-runtime-bom</artifactId> + <version>${camel.k.runtime.version}</version> + <type>pom</type> + <scope>import</scope> + </dependency> + + <dependency> <groupId>org.apache.camel.kamelets</groupId> <artifactId>camel-kamelets-catalog</artifactId> <version>${camel.kamelet.catalog.version}</version> diff --git a/tooling/camel-kafka-connector-generator-maven-plugin/pom.xml b/tooling/camel-kafka-connector-generator-maven-plugin/pom.xml index c0b91b5..4fa15ab 100644 --- a/tooling/camel-kafka-connector-generator-maven-plugin/pom.xml +++ b/tooling/camel-kafka-connector-generator-maven-plugin/pom.xml @@ -33,6 +33,7 @@ <properties> <maven-version>3.6.3</maven-version> + <classgraph.version>4.8.110</classgraph.version> </properties> <dependencyManagement> @@ -115,12 +116,10 @@ <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> -<!-- <version>${jackson.version}</version>--> </dependency> <dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-yaml</artifactId> -<!-- <version>${jackson.version}</version>--> </dependency> <!-- camel --> @@ -196,6 +195,12 @@ <!-- testing --> <dependency> + <groupId>org.apache.camel.kafkaconnector</groupId> + <artifactId>camel-kafka-connector</artifactId> + <version>${project.version}</version> + <scope>test</scope> + </dependency> + <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> <scope>test</scope> @@ -273,6 +278,31 @@ </activation> <build> <plugins> +<!-- <plugin>--> +<!-- <artifactId>maven-resources-plugin</artifactId>--> +<!-- <version>3.0.2</version>--> +<!-- <executions>--> +<!-- <execution>--> +<!-- <id>copy-resource-one</id>--> +<!-- <phase>generate-sources</phase>--> +<!-- <goals>--> +<!-- <goal>copy-resources</goal>--> +<!-- </goals>--> +<!-- <configuration>--> +<!-- <outputDirectory>${basedir}/src/test/resources-its/org/apache/camel/kafkaconnector/maven/GenerateCamelKafkaConnectorsMojoIT/.predefined-repo/org/apache/camel/kafkaconnector/camel-kafka-connector/${project.version}</outputDirectory>--> +<!-- <resources>--> +<!-- <resource>--> +<!-- <directory>${basedir}/../../core/target/</directory>--> +<!-- <includes>--> +<!-- <include>camel-kafka-connector-${project.version}.jar</include>--> +<!-- </includes>--> +<!-- </resource>--> +<!-- </resources>--> +<!-- <overwrite>true</overwrite>--> +<!-- </configuration>--> +<!-- </execution>--> +<!-- </executions>--> +<!-- </plugin>--> <plugin> <groupId>com.soebes.itf.jupiter.extension</groupId> <artifactId>itf-maven-plugin</artifactId> diff --git a/tooling/camel-kafka-connector-generator-maven-plugin/src/main/java/org/apache/camel/kafkaconnector/maven/CamelKafkaConnectorKameletUpdateMojo.java b/tooling/camel-kafka-connector-generator-maven-plugin/src/main/java/org/apache/camel/kafkaconnector/maven/CamelKafkaConnectorKameletUpdateMojo.java index 5d72364..e4ca758 100644 --- a/tooling/camel-kafka-connector-generator-maven-plugin/src/main/java/org/apache/camel/kafkaconnector/maven/CamelKafkaConnectorKameletUpdateMojo.java +++ b/tooling/camel-kafka-connector-generator-maven-plugin/src/main/java/org/apache/camel/kafkaconnector/maven/CamelKafkaConnectorKameletUpdateMojo.java @@ -451,7 +451,7 @@ public class CamelKafkaConnectorKameletUpdateMojo extends AbstractCamelKameletKa } Method getSinkOrSourceKameletMethod = javaClassTask.addMethod().setConstructor(false).setName("get" + ctCapitalizedName + "Kamelet").setProtected().setReturnType("String") - .setBody("return \"kamelet:" + name + "\""); + .setBody("return \"kamelet:" + name + "\";"); getSinkOrSourceKameletMethod.addAnnotation(Override.class); String javaClassTaskFileName = packageName.replaceAll("\\.", "\\/") + File.separator + javaClassTaskName + ".java"; @@ -596,9 +596,9 @@ public class CamelKafkaConnectorKameletUpdateMojo extends AbstractCamelKameletKa javaClass.addField().setFinal(true).setPublic().setStatic(true).setName(confFieldName).setType(String.class).setStringInitializer(propertyValue); String docFieldName = propertyPrefix + "DOC"; - String docLiteralInitializer = kameletProperty.getDescription(); + String docLiteralInitializer = kameletProperty.getDescription().replace("\n", " "); if (kameletProperty.getExample() != null) { - docLiteralInitializer = docLiteralInitializer + " Example: " + kameletProperty.getExample(); + docLiteralInitializer = docLiteralInitializer + " Example: " + kameletProperty.getExample().replace("\n", " "); } javaClass.addField().setFinal(true).setPublic().setStatic(true).setName(docFieldName).setType(String.class).setStringInitializer(docLiteralInitializer); diff --git a/tooling/camel-kafka-connector-generator-maven-plugin/src/main/resources/camel-kafka-connector-fix-dependencies.properties b/tooling/camel-kafka-connector-generator-maven-plugin/src/main/resources/camel-kafka-connector-fix-dependencies.properties index 526c574..ed20e56 100644 --- a/tooling/camel-kafka-connector-generator-maven-plugin/src/main/resources/camel-kafka-connector-fix-dependencies.properties +++ b/tooling/camel-kafka-connector-generator-maven-plugin/src/main/resources/camel-kafka-connector-fix-dependencies.properties @@ -19,9 +19,9 @@ # Use comma-separated values to include multiple dependencies # Global dependencies included in all modules (except the ones in the list) -global= +global=org.apache.camel.kafkaconnector:camel-kafka-connector,org.apache.camel:camel-jackson # we add a default connection factory maven variables can be used as ${varname} -#camel-sjms2=org.apache.activemq:activemq-client::runtime,org.apache.activemq:artemis-jms-client::runtime -#exclude_camel-sjms2= -#additional_properties_camel-sjms2=camel.component.sjms2.connection-factory=#class:org.apache.activemq.ActiveMQConnectionFactory,camel.component.sjms2.connection-factory.brokerURL=tcp://localhost:61616 +camel-sjms2=org.apache.activemq:activemq-client::runtime,org.apache.activemq:artemis-jms-client::runtime +exclude_camel-sjms2= +additional_properties_camel-sjms2=camel.component.sjms2.connection-factory=#class:org.apache.activemq.ActiveMQConnectionFactory,camel.component.sjms2.connection-factory.brokerURL=tcp://localhost:61616 diff --git a/tooling/camel-kafka-connector-generator-maven-plugin/src/main/resources/camel-kafka-connector-kamelet-fix-dependencies.properties b/tooling/camel-kafka-connector-generator-maven-plugin/src/main/resources/camel-kafka-connector-kamelet-fix-dependencies.properties index 973fe74..9d6cfde 100644 --- a/tooling/camel-kafka-connector-generator-maven-plugin/src/main/resources/camel-kafka-connector-kamelet-fix-dependencies.properties +++ b/tooling/camel-kafka-connector-generator-maven-plugin/src/main/resources/camel-kafka-connector-kamelet-fix-dependencies.properties @@ -21,9 +21,7 @@ # Global dependencies included in all modules (except the ones in the list) global=org.apache.camel.kafkaconnector:camel-kafka-connector -camel-couchbase=com.couchbase.client:java-client::runtime - # we add a default connection factory maven variables can be used as ${varname} -camel-sjms2=org.apache.activemq:activemq-client::runtime,org.apache.activemq:artemis-jms-client::runtime -exclude_camel-sjms2= -additional_properties_camel-sjms2=camel.component.sjms2.connection-factory=#class:org.apache.activemq.ActiveMQConnectionFactory,camel.component.sjms2.connection-factory.brokerURL=tcp://localhost:61616 +#camel-sjms2=org.apache.activemq:activemq-client::runtime,org.apache.activemq:artemis-jms-client::runtime +#exclude_camel-sjms2= +#additional_properties_camel-sjms2=camel.component.sjms2.connection-factory=#class:org.apache.activemq.ActiveMQConnectionFactory,camel.component.sjms2.connection-factory.brokerURL=tcp://localhost:61616 \ No newline at end of file diff --git a/tooling/camel-kafka-connector-generator-maven-plugin/src/test/java/org/apache/camel/kafkaconnector/maven/GenerateCamelKafkaConnectorsMojoIT.java b/tooling/camel-kafka-connector-generator-maven-plugin/src/test/java/org/apache/camel/kafkaconnector/maven/GenerateCamelKafkaConnectorsMojoIT.java index 657cef7..43004ad 100644 --- a/tooling/camel-kafka-connector-generator-maven-plugin/src/test/java/org/apache/camel/kafkaconnector/maven/GenerateCamelKafkaConnectorsMojoIT.java +++ b/tooling/camel-kafka-connector-generator-maven-plugin/src/test/java/org/apache/camel/kafkaconnector/maven/GenerateCamelKafkaConnectorsMojoIT.java @@ -27,21 +27,35 @@ import java.util.Objects; import java.util.Set; import java.util.stream.Collectors; +import com.soebes.itf.jupiter.extension.MavenGoal; import com.soebes.itf.jupiter.extension.MavenJupiterExtension; +import com.soebes.itf.jupiter.extension.MavenOption; +import com.soebes.itf.jupiter.extension.MavenPredefinedRepository; +import com.soebes.itf.jupiter.extension.MavenProject; import com.soebes.itf.jupiter.extension.MavenRepository; import com.soebes.itf.jupiter.extension.MavenTest; import com.soebes.itf.jupiter.maven.MavenExecutionResult; import org.apache.camel.kafkaconnector.maven.utils.MavenUtils; import org.apache.camel.tooling.util.Strings; +import org.junit.jupiter.api.MethodOrderer; +import org.junit.jupiter.api.Order; +import org.junit.jupiter.api.TestMethodOrder; import static com.soebes.itf.extension.assertj.MavenExecutionResultAssert.assertThat; import static org.junit.jupiter.api.Assertions.assertFalse; @MavenJupiterExtension @MavenRepository +//@MavenPredefinedRepository +@MavenProject +@TestMethodOrder( MethodOrderer.OrderAnnotation.class ) class GenerateCamelKafkaConnectorsMojoIT { @MavenTest + @Order(10) + @MavenGoal("clean") + @MavenGoal("verify") +// @MavenOption("--no-snapshot-updates") // @MavenOption(MavenCLIOptions.DEBUG) public void test_generate(MavenExecutionResult result) throws IOException { assertThat(result).isSuccessful(); @@ -53,6 +67,7 @@ class GenerateCamelKafkaConnectorsMojoIT { .anyMatch(s -> s.startsWith("Kamelets found to be used to generate/update a kafka connector: [")) .anyMatch(s -> s.startsWith("Creating camel kafka connector for")) .anyMatch(s -> s.startsWith("Creating camel kafka kamelet connector for")) + .anyMatch(s -> s.startsWith("Connectors previously generated found to be removed: []")) .containsSequence( "Creating a new pom.xml for the connector from scratch", "Creating a new package.xml for the connector.") @@ -78,6 +93,15 @@ class GenerateCamelKafkaConnectorsMojoIT { .forEach(m -> assertFalse(files.contains(m), "component should be excluded")); } + @MavenTest + @Order(20) + @MavenGoal("package") +// @MavenOption("--no-snapshot-updates") +// @MavenOption(MavenCLIOptions.DEBUG) + public void test_build(MavenExecutionResult result) throws IOException { + assertThat(result).isSuccessful(); + } + private List<String> extractExcluded(List<String> stdout) { return stdout.stream() .filter(s -> s.startsWith("[INFO] Excluded Components that won't be used to generate a kafka connector: [")) diff --git a/tooling/camel-kafka-connector-generator-maven-plugin/src/test/resources-its/org/apache/camel/kafkaconnector/maven/GenerateCamelKafkaConnectorsMojoIT/test_generate/pom.xml b/tooling/camel-kafka-connector-generator-maven-plugin/src/test/resources-its/org/apache/camel/kafkaconnector/maven/GenerateCamelKafkaConnectorsMojoIT/maven_project/pom.xml similarity index 74% rename from tooling/camel-kafka-connector-generator-maven-plugin/src/test/resources-its/org/apache/camel/kafkaconnector/maven/GenerateCamelKafkaConnectorsMojoIT/test_generate/pom.xml rename to tooling/camel-kafka-connector-generator-maven-plugin/src/test/resources-its/org/apache/camel/kafkaconnector/maven/GenerateCamelKafkaConnectorsMojoIT/maven_project/pom.xml index 2a70d13..7ac1eaa 100644 --- a/tooling/camel-kafka-connector-generator-maven-plugin/src/test/resources-its/org/apache/camel/kafkaconnector/maven/GenerateCamelKafkaConnectorsMojoIT/test_generate/pom.xml +++ b/tooling/camel-kafka-connector-generator-maven-plugin/src/test/resources-its/org/apache/camel/kafkaconnector/maven/GenerateCamelKafkaConnectorsMojoIT/maven_project/pom.xml @@ -21,13 +21,55 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.camel.kafkaconnector</groupId> + <artifactId>parent</artifactId> + <version>@project.version@</version> + </parent> <groupId>org.apache.camel.kafkaconnector.test</groupId> <artifactId>test-project</artifactId> - <version>1.0-SNAPSHOT</version> + <version>@project.version@</version> <packaging>pom</packaging> <name>Test Project</name> + <repositories> + <!-- camel-jira --> + <repository> + <id>atlassian-public</id> + <url>https://packages.atlassian.com/maven-external</url> + <name>Atlassian Public Repo</name> + <snapshots> + <enabled>false</enabled> + </snapshots> + <releases> + <enabled>true</enabled> + </releases> + </repository> + <!-- camel-ipfs and camel-weka --> + <repository> + <id>jboss.thirdparty</id> + <name>JBoss Thirdparty Repository</name> + <url>https://repository.jboss.org/nexus/service/local/repositories/thirdparty-releases/content/</url> + <snapshots> + <enabled>false</enabled> + </snapshots> + <releases> + <enabled>true</enabled> + </releases> + </repository> + </repositories> + + <dependencyManagement> + <dependencies> + <dependency> + <groupId>org.apache.camel.kafkaconnector</groupId> + <artifactId>camel-kafka-connector</artifactId> + <version>${project.version}</version> + </dependency> + </dependencies> + </dependencyManagement> + <build> <plugins> <plugin> @@ -35,7 +77,7 @@ <artifactId>camel-kafka-connector-generator-maven-plugin</artifactId> <version>@project.version@</version> <configuration> - <connectorsProjectName>\${project.artifactId}</connectorsProjectName> + <connectorsProjectName>test-project</connectorsProjectName> <!-- set to true to make build fail fast if missing documentation in docs files --> <!-- <failFast>false</failFast> --> <!-- set to true to make build fail if an option has no description --> @@ -72,6 +114,7 @@ <exampleSinkPropertiesFileTemplate> ${project.build.testOutputDirectory}/camel-kafka-connector-template-example-sink-properties.template </exampleSinkPropertiesFileTemplate> + <removeMissingComponents>true</removeMissingComponents> <excludedComponents> <param>bonita</param> <param>bean-validator</param> @@ -114,6 +157,22 @@ </plugins> </build> + <profiles> + <profile> + <id>java11-build</id> + <activation> + <jdk>[11,)</jdk> + </activation> + <dependencies> + <dependency> + <groupId>javax.annotation</groupId> + <artifactId>javax.annotation-api</artifactId> + <version>1.3.2</version> + </dependency> + </dependencies> + </profile> + </profiles> + <modules> </modules> </project> diff --git a/tooling/camel-kafka-connector-generator-maven-plugin/src/test/resources/template-connecotr-kamelet-pom.xml b/tooling/camel-kafka-connector-generator-maven-plugin/src/test/resources/template-connecotr-kamelet-pom.xml index 927ffdb..5396f90 100644 --- a/tooling/camel-kafka-connector-generator-maven-plugin/src/test/resources/template-connecotr-kamelet-pom.xml +++ b/tooling/camel-kafka-connector-generator-maven-plugin/src/test/resources/template-connecotr-kamelet-pom.xml @@ -22,8 +22,8 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> - <groupId>org.apache.camel.kafkaconnector</groupId> - <artifactId>connectors</artifactId> + <groupId>org.apache.camel.kafkaconnector.test</groupId> + <artifactId>test-project</artifactId> <version>${version}</version> </parent> diff --git a/tooling/camel-kafka-connector-generator-maven-plugin/src/test/resources/template-connector-pom.xml b/tooling/camel-kafka-connector-generator-maven-plugin/src/test/resources/template-connector-pom.xml index df3eb0e..f093224 100644 --- a/tooling/camel-kafka-connector-generator-maven-plugin/src/test/resources/template-connector-pom.xml +++ b/tooling/camel-kafka-connector-generator-maven-plugin/src/test/resources/template-connector-pom.xml @@ -22,8 +22,8 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> - <groupId>org.apache.camel.kafkaconnector</groupId> - <artifactId>connectors</artifactId> + <groupId>org.apache.camel.kafkaconnector.test</groupId> + <artifactId>test-project</artifactId> <version>${version}</version> </parent> diff --git a/tooling/pom.xml b/tooling/pom.xml index 630763c..a6e6f3f 100644 --- a/tooling/pom.xml +++ b/tooling/pom.xml @@ -51,7 +51,6 @@ <jandex-version>2.1.1.Final</jandex-version> <mvel-version>2.4.12.Final</mvel-version> <roaster-version>2.20.1.Final</roaster-version> - <classgraph.version>4.8.110</classgraph.version> </properties> <build>