From 0a7cdbe2beb140bec3724b30bd2201efb9da8a22 Mon Sep 17 00:00:00 2001 From: lburgazzoli Date: Wed, 2 Sep 2020 17:37:05 +0200 Subject: [PATCH] loaders: add itest for kotlin on quarkus (disabled because of https://github.com/quarkusio/quarkus/issues/11549) --- .../pom.xml | 113 ++++++++++++++++++ .../k/loader/kotlin/quarkus/Application.java | 45 +++++++ .../src/main/resources/application.properties | 27 +++++ .../kotlin/quarkus/KotlinLoaderTest.java | 61 ++++++++++ .../src/test/resources/routes.kts | 20 ++++ .../camel-k-quarkus-itests/pom.xml | 1 + .../deployment/pom.xml | 5 - .../camel-k-quarkus-loader-kotlin/pom.xml | 12 ++ .../runtime/pom.xml | 17 --- camel-k-quarkus/pom.xml | 7 ++ .../pom.xml | 7 ++ 11 files changed, 293 insertions(+), 22 deletions(-) create mode 100644 camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-loader-kotlin/pom.xml create mode 100644 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 create mode 100644 camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-loader-kotlin/src/main/resources/application.properties create mode 100644 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 create mode 100644 camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-loader-kotlin/src/test/resources/routes.kts diff --git a/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-loader-kotlin/pom.xml b/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-loader-kotlin/pom.xml new file mode 100644 index 000000000..c3736b1d7 --- /dev/null +++ b/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-loader-kotlin/pom.xml @@ -0,0 +1,113 @@ + + + + + org.apache.camel.k + camel-k-quarkus-itests + 1.5.1-SNAPSHOT + + 4.0.0 + + camel-k-quarkus-itests-loader-kotlin + + + + org.apache.camel.k + camel-k-quarkus-loader-kotlin + + + org.apache.camel.quarkus + camel-quarkus-direct + + + org.apache.camel.quarkus + camel-quarkus-log + + + org.apache.camel.k + camel-k-quarkus-itests-loader-support + + + + + io.quarkus + quarkus-junit5 + test + + + io.rest-assured + rest-assured + test + + + org.assertj + assertj-core + test + + + + + + + org.codehaus.mojo + build-helper-maven-plugin + ${build-helper-maven-plugin.version} + + + reserve-network-port + + reserve-network-port + + process-resources + + + test.http.port.jvm + test.http.port.native + + + + + + + io.quarkus + quarkus-maven-plugin + ${quarkus.version} + + + + build + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + ${test.http.port.jvm} + org.jboss.logmanager.LogManager + + + + + + + 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 000000000..a8aa15f9d --- /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 000000000..67b30b144 --- /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 000000000..8ce44c4a2 --- /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 000000000..fba70eee0 --- /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 c886cd097..2ca69ea72 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 @@ camel-k-quarkus-itests-knative camel-k-quarkus-itests-loader-support camel-k-quarkus-itests-loader-groovy + camel-k-quarkus-itests-loader-kotlin camel-k-quarkus-itests-loader-java camel-k-quarkus-itests-loader-js camel-k-quarkus-itests-loader-xml 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 72bde54ad..6a0940fdf 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 @@ org.apache.camel.k camel-k-quarkus-loader-kotlin - - - org.apache.camel.quarkus - camel-quarkus-kotlin-deployment - 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 fe98331ad..567a829d0 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 @@ camel-k-quarkus-loader-kotlin-parent + + + + org.jetbrains.kotlin + kotlin-bom + ${kotlin.version} + pom + import + + + + runtime deployment 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 c80083aa8..c604cffdf 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 @@ camel-k-quarkus-loader-kotlin - - - - org.jetbrains.kotlin - kotlin-bom - ${kotlin.version} - pom - import - - - - org.apache.camel.k camel-k-loader-kotlin - org.apache.camel.k camel-k-quarkus-core - - org.apache.camel.quarkus - camel-quarkus-kotlin - diff --git a/camel-k-quarkus/pom.xml b/camel-k-quarkus/pom.xml index 6c998ebad..33dfe27a1 100644 --- a/camel-k-quarkus/pom.xml +++ b/camel-k-quarkus/pom.xml @@ -30,6 +30,13 @@ + + org.jetbrains.kotlin + kotlin-bom + ${kotlin.version} + pom + import + org.apache.camel.quarkus camel-quarkus-bom diff --git a/examples/camel-k-runtime-example-quarkus-kotlin/pom.xml b/examples/camel-k-runtime-example-quarkus-kotlin/pom.xml index 6b7d9fd2e..cae868a29 100644 --- a/examples/camel-k-runtime-example-quarkus-kotlin/pom.xml +++ b/examples/camel-k-runtime-example-quarkus-kotlin/pom.xml @@ -35,6 +35,13 @@ + + org.jetbrains.kotlin + kotlin-bom + ${kotlin.version} + pom + import + org.apache.camel.quarkus camel-quarkus-bom