This is an automated email from the ASF dual-hosted git repository. lburgazzoli pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel-k-runtime.git
The following commit(s) were added to refs/heads/master by this push: new 0a7cdbe loaders: add itest for kotlin on quarkus (disabled because of https://github.com/quarkusio/quarkus/issues/11549) 0a7cdbe is described below commit 0a7cdbe2beb140bec3724b30bd2201efb9da8a22 Author: lburgazzoli <lburgazz...@gmail.com> AuthorDate: Wed Sep 2 17:37:05 2020 +0200 loaders: add itest for kotlin on quarkus (disabled because of https://github.com/quarkusio/quarkus/issues/11549) --- .../camel-k-quarkus-itests-loader-kotlin}/pom.xml | 97 ++++++++++------------ .../camel/k/loader/kotlin/quarkus/Application.java | 45 ++++++++++ .../src/main/resources/application.properties | 27 ++++++ .../k/loader/kotlin/quarkus/KotlinLoaderTest.java | 61 ++++++++++++++ .../src/test/resources/routes.kts | 20 +++++ camel-k-quarkus/camel-k-quarkus-itests/pom.xml | 1 + .../deployment/pom.xml | 5 -- .../camel-k-quarkus-loader-kotlin/pom.xml | 12 +++ .../camel-k-quarkus-loader-kotlin/runtime/pom.xml | 17 ---- camel-k-quarkus/pom.xml | 7 ++ .../camel-k-runtime-example-quarkus-kotlin/pom.xml | 7 ++ 11 files changed, 226 insertions(+), 73 deletions(-) diff --git a/examples/camel-k-runtime-example-quarkus-kotlin/pom.xml b/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-loader-kotlin/pom.xml similarity index 59% copy from examples/camel-k-runtime-example-quarkus-kotlin/pom.xml copy to camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-loader-kotlin/pom.xml index 6b7d9fd..c3736b1 100644 --- a/examples/camel-k-runtime-example-quarkus-kotlin/pom.xml +++ b/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-loader-kotlin/pom.xml @@ -18,98 +18,93 @@ --> <project xmlns="http://maven.apache.org/POM/4.0.0" 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"> - <parent> <groupId>org.apache.camel.k</groupId> - <artifactId>camel-k-runtime-examples</artifactId> + <artifactId>camel-k-quarkus-itests</artifactId> <version>1.5.1-SNAPSHOT</version> </parent> - <modelVersion>4.0.0</modelVersion> - <artifactId>camel-k-runtime-example-quarkus-kotlin</artifactId> - - <properties> - <noDeps>true</noDeps> - <quarkus.camel.routes-discovery.enabled>false</quarkus.camel.routes-discovery.enabled> - </properties> - <dependencyManagement> - <dependencies> - <dependency> - <groupId>org.apache.camel.quarkus</groupId> - <artifactId>camel-quarkus-bom</artifactId> - <version>${camel-quarkus.version}</version> - <type>pom</type> - <scope>import</scope> - </dependency> - </dependencies> - </dependencyManagement> + <artifactId>camel-k-quarkus-itests-loader-kotlin</artifactId> <dependencies> <dependency> <groupId>org.apache.camel.k</groupId> - <artifactId>camel-k-runtime-quarkus</artifactId> + <artifactId>camel-k-quarkus-loader-kotlin</artifactId> </dependency> <dependency> - <groupId>org.apache.camel.k</groupId> - <artifactId>camel-k-quarkus-loader-kotlin</artifactId> + <groupId>org.apache.camel.quarkus</groupId> + <artifactId>camel-quarkus-direct</artifactId> </dependency> - <dependency> <groupId>org.apache.camel.quarkus</groupId> <artifactId>camel-quarkus-log</artifactId> </dependency> <dependency> - <groupId>org.apache.camel.quarkus</groupId> - <artifactId>camel-quarkus-timer</artifactId> + <groupId>org.apache.camel.k</groupId> + <artifactId>camel-k-quarkus-itests-loader-support</artifactId> + </dependency> + + <!-- test dependencies --> + <dependency> + <groupId>io.quarkus</groupId> + <artifactId>quarkus-junit5</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>io.rest-assured</groupId> + <artifactId>rest-assured</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.assertj</groupId> + <artifactId>assertj-core</artifactId> + <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> - <groupId>io.quarkus</groupId> - <artifactId>quarkus-bootstrap-maven-plugin</artifactId> - <version>${quarkus.version}</version> - </plugin> - <plugin> - <groupId>io.quarkus</groupId> - <artifactId>quarkus-maven-plugin</artifactId> - <version>${quarkus.version}</version> + <groupId>org.codehaus.mojo</groupId> + <artifactId>build-helper-maven-plugin</artifactId> + <version>${build-helper-maven-plugin.version}</version> <executions> <execution> - <id>build</id> + <id>reserve-network-port</id> <goals> - <goal>build</goal> + <goal>reserve-network-port</goal> </goals> + <phase>process-resources</phase> <configuration> - <finalName>${project.artifactId}</finalName> + <portNames> + <portName>test.http.port.jvm</portName> + <portName>test.http.port.native</portName> + </portNames> </configuration> </execution> </executions> </plugin> <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>exec-maven-plugin</artifactId> - <version>${exec-maven-plugin.version}</version> + <groupId>io.quarkus</groupId> + <artifactId>quarkus-maven-plugin</artifactId> + <version>${quarkus.version}</version> <executions> <execution> <goals> - <goal>exec</goal> + <goal>build</goal> </goals> </execution> </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> <configuration> - <executable>java</executable> - <workingDirectory>${project.basedir}</workingDirectory> - <arguments> - <argument>-jar</argument> - <argument>${project.build.directory}/${project.artifactId}-runner.jar</argument> - </arguments> - <environmentVariables> - <CAMEL_K_CONF>${project.basedir}/data/application.properties</CAMEL_K_CONF> - <CAMEL_K_ROUTES>file:${project.basedir}/data/routes.kts</CAMEL_K_ROUTES> - </environmentVariables> + <systemProperties> + <quarkus.http.test-port>${test.http.port.jvm}</quarkus.http.test-port> + <java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager> + </systemProperties> </configuration> </plugin> </plugins> diff --git a/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-loader-kotlin/src/main/java/org/apache/camel/k/loader/kotlin/quarkus/Application.java b/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-loader-kotlin/src/main/java/org/apache/camel/k/loader/kotlin/quarkus/Application.java new file mode 100644 index 0000000..a8aa15f --- /dev/null +++ b/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-loader-kotlin/src/main/java/org/apache/camel/k/loader/kotlin/quarkus/Application.java @@ -0,0 +1,45 @@ +/* + * 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.k.loader.kotlin.quarkus; + +import javax.enterprise.context.ApplicationScoped; +import javax.inject.Inject; +import javax.json.JsonObject; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; + +import org.apache.camel.CamelContext; +import org.apache.camel.Consume; +import org.apache.camel.k.loader.support.LoaderSupport; + +@Path("/test") +@ApplicationScoped +public class Application { + @Inject + CamelContext context; + + @POST + @Path("/load-routes/{name}") + @Consume(MediaType.TEXT_PLAIN) + @Produces(MediaType.APPLICATION_JSON) + public JsonObject loadRoutes(@PathParam("name") String name, String code) throws Exception { + return LoaderSupport.inspectSource(context, name, "kts", code); + } +} diff --git a/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-loader-kotlin/src/main/resources/application.properties b/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-loader-kotlin/src/main/resources/application.properties new file mode 100644 index 0000000..67b30b1 --- /dev/null +++ b/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-loader-kotlin/src/main/resources/application.properties @@ -0,0 +1,27 @@ +## --------------------------------------------------------------------------- +## 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. +## --------------------------------------------------------------------------- + +# +# Quarkus +# +quarkus.log.console.enable = true +quarkus.banner.enabled = false + +# +# Quarkus :: Camel +# +quarkus.camel.routes-discovery.enabled = false diff --git a/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-loader-kotlin/src/test/java/org/apache/camel/k/loader/kotlin/quarkus/KotlinLoaderTest.java b/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-loader-kotlin/src/test/java/org/apache/camel/k/loader/kotlin/quarkus/KotlinLoaderTest.java new file mode 100644 index 0000000..8ce44c4 --- /dev/null +++ b/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-loader-kotlin/src/test/java/org/apache/camel/k/loader/kotlin/quarkus/KotlinLoaderTest.java @@ -0,0 +1,61 @@ +/* + * 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.k.loader.kotlin.quarkus; + +import java.io.IOException; +import java.io.InputStream; + +import javax.ws.rs.core.MediaType; + +import io.quarkus.test.junit.DisabledOnNativeImage; +import io.quarkus.test.junit.QuarkusTest; +import io.restassured.RestAssured; +import io.restassured.path.json.JsonPath; +import org.apache.camel.util.IOHelper; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +@Disabled("https://github.com/quarkusio/quarkus/issues/11549") +@DisabledOnNativeImage +@QuarkusTest +public class KotlinLoaderTest { + @Test + public void testLoadRoutes() throws IOException { + String code; + + try (InputStream is = KotlinLoaderTest.class.getResourceAsStream("/routes.kts")) { + code = IOHelper.loadText(is); + } + + JsonPath p = RestAssured.given() + .contentType(MediaType.TEXT_PLAIN) + .accept(MediaType.APPLICATION_JSON) + .body(code) + .post("/test/load-routes/MyRoute") + .then() + .statusCode(200) + .extract() + .body() + .jsonPath(); + + assertThat(p.getList("components", String.class)).contains("direct", "log"); + assertThat(p.getList("routes", String.class)).contains("kotlin"); + assertThat(p.getList("endpoints", String.class)).contains("direct://kotlin", "log://kotlin"); + } +} diff --git a/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-loader-kotlin/src/test/resources/routes.kts b/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-loader-kotlin/src/test/resources/routes.kts new file mode 100644 index 0000000..fba70ee --- /dev/null +++ b/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-loader-kotlin/src/test/resources/routes.kts @@ -0,0 +1,20 @@ +/* + * 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. + */ + +from("direct:kotlin") + .routeId("kotlin") + .to("log:kotlin") \ No newline at end of file diff --git a/camel-k-quarkus/camel-k-quarkus-itests/pom.xml b/camel-k-quarkus/camel-k-quarkus-itests/pom.xml index c886cd0..2ca69ea 100644 --- a/camel-k-quarkus/camel-k-quarkus-itests/pom.xml +++ b/camel-k-quarkus/camel-k-quarkus-itests/pom.xml @@ -34,6 +34,7 @@ <module>camel-k-quarkus-itests-knative</module> <module>camel-k-quarkus-itests-loader-support</module> <module>camel-k-quarkus-itests-loader-groovy</module> + <module>camel-k-quarkus-itests-loader-kotlin</module> <module>camel-k-quarkus-itests-loader-java</module> <module>camel-k-quarkus-itests-loader-js</module> <module>camel-k-quarkus-itests-loader-xml</module> diff --git a/camel-k-quarkus/camel-k-quarkus-loader-kotlin/deployment/pom.xml b/camel-k-quarkus/camel-k-quarkus-loader-kotlin/deployment/pom.xml index 72bde54..6a0940f 100644 --- a/camel-k-quarkus/camel-k-quarkus-loader-kotlin/deployment/pom.xml +++ b/camel-k-quarkus/camel-k-quarkus-loader-kotlin/deployment/pom.xml @@ -36,11 +36,6 @@ <groupId>org.apache.camel.k</groupId> <artifactId>camel-k-quarkus-loader-kotlin</artifactId> </dependency> - - <dependency> - <groupId>org.apache.camel.quarkus</groupId> - <artifactId>camel-quarkus-kotlin-deployment</artifactId> - </dependency> </dependencies> <build> diff --git a/camel-k-quarkus/camel-k-quarkus-loader-kotlin/pom.xml b/camel-k-quarkus/camel-k-quarkus-loader-kotlin/pom.xml index fe98331..567a829 100644 --- a/camel-k-quarkus/camel-k-quarkus-loader-kotlin/pom.xml +++ b/camel-k-quarkus/camel-k-quarkus-loader-kotlin/pom.xml @@ -28,6 +28,18 @@ <artifactId>camel-k-quarkus-loader-kotlin-parent</artifactId> + <dependencyManagement> + <dependencies> + <dependency> + <groupId>org.jetbrains.kotlin</groupId> + <artifactId>kotlin-bom</artifactId> + <version>${kotlin.version}</version> + <type>pom</type> + <scope>import</scope> + </dependency> + </dependencies> + </dependencyManagement> + <modules> <module>runtime</module> <module>deployment</module> diff --git a/camel-k-quarkus/camel-k-quarkus-loader-kotlin/runtime/pom.xml b/camel-k-quarkus/camel-k-quarkus-loader-kotlin/runtime/pom.xml index c80083a..c604cff 100644 --- a/camel-k-quarkus/camel-k-quarkus-loader-kotlin/runtime/pom.xml +++ b/camel-k-quarkus/camel-k-quarkus-loader-kotlin/runtime/pom.xml @@ -27,32 +27,15 @@ <artifactId>camel-k-quarkus-loader-kotlin</artifactId> - <dependencyManagement> - <dependencies> - <dependency> - <groupId>org.jetbrains.kotlin</groupId> - <artifactId>kotlin-bom</artifactId> - <version>${kotlin.version}</version> - <type>pom</type> - <scope>import</scope> - </dependency> - </dependencies> - </dependencyManagement> - <dependencies> <dependency> <groupId>org.apache.camel.k</groupId> <artifactId>camel-k-loader-kotlin</artifactId> </dependency> - <dependency> <groupId>org.apache.camel.k</groupId> <artifactId>camel-k-quarkus-core</artifactId> </dependency> - <dependency> - <groupId>org.apache.camel.quarkus</groupId> - <artifactId>camel-quarkus-kotlin</artifactId> - </dependency> </dependencies> <build> diff --git a/camel-k-quarkus/pom.xml b/camel-k-quarkus/pom.xml index 6c998eb..33dfe27 100644 --- a/camel-k-quarkus/pom.xml +++ b/camel-k-quarkus/pom.xml @@ -31,6 +31,13 @@ <dependencyManagement> <dependencies> <dependency> + <groupId>org.jetbrains.kotlin</groupId> + <artifactId>kotlin-bom</artifactId> + <version>${kotlin.version}</version> + <type>pom</type> + <scope>import</scope> + </dependency> + <dependency> <groupId>org.apache.camel.quarkus</groupId> <artifactId>camel-quarkus-bom</artifactId> <version>${camel-quarkus.version}</version> diff --git a/examples/camel-k-runtime-example-quarkus-kotlin/pom.xml b/examples/camel-k-runtime-example-quarkus-kotlin/pom.xml index 6b7d9fd..cae868a 100644 --- a/examples/camel-k-runtime-example-quarkus-kotlin/pom.xml +++ b/examples/camel-k-runtime-example-quarkus-kotlin/pom.xml @@ -36,6 +36,13 @@ <dependencyManagement> <dependencies> <dependency> + <groupId>org.jetbrains.kotlin</groupId> + <artifactId>kotlin-bom</artifactId> + <version>${kotlin.version}</version> + <type>pom</type> + <scope>import</scope> + </dependency> + <dependency> <groupId>org.apache.camel.quarkus</groupId> <artifactId>camel-quarkus-bom</artifactId> <version>${camel-quarkus.version}</version>