You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by lb...@apache.org on 2020/09/22 20:31:36 UTC

[camel-k-runtime] branch master updated: quarkus: consolidate knative integration tests

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 8914c7c  quarkus: consolidate knative integration tests
8914c7c is described below

commit 8914c7c7060776279e09d244ecec9526eb71030a
Author: Luca Burgazzoli <lb...@gmail.com>
AuthorDate: Tue Sep 22 19:09:33 2020 +0200

    quarkus: consolidate knative integration tests
---
 .github/workflows/ci-build.yml                     |   1 -
 .../camel-k-quarkus-itests-knative/pom.xml         |  37 +++--
 .../camel/k/quarkus/it/KnativeApplication.java     |  33 ++++
 .../knative/KnativeComponentApplication.java       |  72 ---------
 .../src/main/resources/application.properties      |   5 -
 .../src/main/resources/env.json                    |  13 --
 .../org/apache/camel/k/quarkus/it/KnativeIT.java   |   0
 .../KnativeTest.java}                              |  46 ++++--
 .../k/quarkus/knative/KnativeComponentIT.java      |  23 ---
 .../src/test/resources/routes.properties           |   0
 .../src/test/resources/routes.yaml                 |   9 ++
 .../camel-k-quarkus-itests-runtime-knative/pom.xml | 175 ---------------------
 .../src/main/resources/application.properties      |  23 ---
 .../org/apache/camel/k/quarkus/it/KnativeTest.java |  41 -----
 .../src/test/resources/env.json                    |  20 ---
 camel-k-quarkus/camel-k-quarkus-itests/pom.xml     |   1 -
 .../camel/component/knative/spi/CloudEvent.java    |  14 ++
 17 files changed, 113 insertions(+), 400 deletions(-)

diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml
index fef69cd..7a0dc49 100644
--- a/.github/workflows/ci-build.yml
+++ b/.github/workflows/ci-build.yml
@@ -112,7 +112,6 @@ jobs:
           - :camel-k-quarkus-itests-core
           - :camel-k-quarkus-itests-runtime
           - :camel-k-quarkus-itests-runtime-kamelet
-          - :camel-k-quarkus-itests-runtime-knative
           - :camel-k-quarkus-itests-cron
           - :camel-k-quarkus-itests-master
           - :camel-k-quarkus-itests-kamelet
diff --git a/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-knative/pom.xml b/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-knative/pom.xml
index 8a6493b..80857c2 100644
--- a/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-knative/pom.xml
+++ b/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-knative/pom.xml
@@ -30,10 +30,25 @@
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.k</groupId>
+            <artifactId>camel-k-runtime-quarkus</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.k</groupId>
             <artifactId>camel-k-quarkus-knative</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.camel.k</groupId>
+            <artifactId>camel-k-quarkus-loader-yaml</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-direct</artifactId>
+        </dependency>
 
-        <!-- quarkus dependencies -->
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-jsonb</artifactId>
+        </dependency>
         <dependency>
             <groupId>io.quarkus</groupId>
             <artifactId>quarkus-resteasy</artifactId>
@@ -61,7 +76,6 @@
         </dependency>
     </dependencies>
 
-
     <build>
         <plugins>
             <plugin>
@@ -100,13 +114,16 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
+                    <environmentVariables>
+                        <CAMEL_K_ROUTES>file:${project.basedir}/src/test/resources/routes.yaml</CAMEL_K_ROUTES>
+                        <CAMEL_K_CONF>${project.basedir}/src/test/resources/routes.properties</CAMEL_K_CONF>
+                        <__CAMEL_KNATIVE_CONFIGURATION>file:${project.basedir}/src/test/resources/env.json</__CAMEL_KNATIVE_CONFIGURATION>
+                        <CAMEL_KNATIVE_LISTENING_PORT>${test.http.port.jvm}</CAMEL_KNATIVE_LISTENING_PORT>
+                    </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>
-                    <environmentVariables>
-                        <CAMEL_KNATIVE_CONFIGURATION>file:${project.basedir}/src/main/resources/env.json</CAMEL_KNATIVE_CONFIGURATION>
-                    </environmentVariables>
                 </configuration>
             </plugin>
         </plugins>
@@ -135,13 +152,16 @@
                                     <goal>verify</goal>
                                 </goals>
                                 <configuration>
+                                    <environmentVariables>
+                                        <CAMEL_K_ROUTES>file:${project.basedir}/src/test/resources/routes.yaml</CAMEL_K_ROUTES>
+                                        <CAMEL_K_CONF>${project.basedir}/src/test/resources/routes.properties</CAMEL_K_CONF>
+                                        <__CAMEL_KNATIVE_CONFIGURATION>file:${project.basedir}/src/test/resources/env.json</__CAMEL_KNATIVE_CONFIGURATION>
+                                        <CAMEL_KNATIVE_LISTENING_PORT>${test.http.port.native}</CAMEL_KNATIVE_LISTENING_PORT>
+                                    </environmentVariables>
                                     <systemProperties>
                                         <quarkus.http.test-port>${test.http.port.native}</quarkus.http.test-port>
                                         <native.image.path>${project.build.directory}/${project.build.finalName}-runner</native.image.path>
                                     </systemProperties>
-                                    <environmentVariables>
-                                        <CAMEL_KNATIVE_CONFIGURATION>file:${project.basedir}/src/main/resources/env.json</CAMEL_KNATIVE_CONFIGURATION>
-                                    </environmentVariables>
                                 </configuration>
                             </execution>
                         </executions>
@@ -151,5 +171,4 @@
         </profile>
     </profiles>
 
-
 </project>
diff --git a/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-runtime-knative/src/main/java/org/apache/camel/k/quarkus/it/KnativeApplication.java b/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-knative/src/main/java/org/apache/camel/k/quarkus/it/KnativeApplication.java
similarity index 64%
rename from camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-runtime-knative/src/main/java/org/apache/camel/k/quarkus/it/KnativeApplication.java
rename to camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-knative/src/main/java/org/apache/camel/k/quarkus/it/KnativeApplication.java
index e0375fd..7ee97b6 100644
--- a/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-runtime-knative/src/main/java/org/apache/camel/k/quarkus/it/KnativeApplication.java
+++ b/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-knative/src/main/java/org/apache/camel/k/quarkus/it/KnativeApplication.java
@@ -16,15 +16,23 @@
  */
 package org.apache.camel.k.quarkus.it;
 
+import java.util.Map;
+
 import javax.enterprise.context.ApplicationScoped;
 import javax.inject.Inject;
+import javax.json.Json;
+import javax.json.JsonObject;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
 import javax.ws.rs.POST;
 import javax.ws.rs.Path;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 
 import io.quarkus.runtime.annotations.RegisterForReflection;
+import org.apache.camel.CamelContext;
 import org.apache.camel.FluentProducerTemplate;
+import org.apache.camel.component.knative.KnativeEndpoint;
 import org.apache.camel.component.knative.spi.Knative;
 import org.apache.camel.component.knative.spi.KnativeEnvironment;
 import org.eclipse.microprofile.config.inject.ConfigProperty;
@@ -34,8 +42,28 @@ import org.eclipse.microprofile.config.inject.ConfigProperty;
 @ApplicationScoped
 public class KnativeApplication {
     @Inject
+    CamelContext context;
+    @Inject
     FluentProducerTemplate template;
 
+    @SuppressWarnings("unchecked")
+    @GET
+    @Path("/inspect")
+    @Consumes(MediaType.TEXT_PLAIN)
+    @Produces(MediaType.APPLICATION_JSON)
+    public JsonObject inspect() {
+        var endpoint = context.getEndpoint("knative:endpoint/from", KnativeEndpoint.class);
+        var envMeta = endpoint.getConfiguration().getEnvironment().lookup(Knative.Type.endpoint, "from")
+            .filter(entry -> Knative.EndpointKind.source.name().equals(entry.getMetadata().get(Knative.CAMEL_ENDPOINT_KIND)))
+            .findFirst()
+            .map(def -> Json.createObjectBuilder((Map)def.getMetadata()))
+            .orElseThrow(IllegalArgumentException::new);
+
+        return Json.createObjectBuilder()
+            .add("env-meta", envMeta)
+            .build();
+    }
+
     @POST
     @Path("/execute")
     @Produces(MediaType.TEXT_PLAIN)
@@ -52,6 +80,11 @@ public class KnativeApplication {
                 .withMeta(Knative.CAMEL_ENDPOINT_KIND, Knative.EndpointKind.source)
                 .withMeta(Knative.SERVICE_META_PATH, "/knative")
                 .build(),
+            KnativeEnvironment.serviceBuilder(Knative.Type.endpoint, "from")
+                .withMeta(Knative.CAMEL_ENDPOINT_KIND, Knative.EndpointKind.source)
+                .withMeta(Knative.SERVICE_META_PATH, "/knative")
+                .withMeta(Knative.KNATIVE_EVENT_TYPE, "camel.k.evt")
+                .build(),
             KnativeEnvironment.serviceBuilder(Knative.Type.endpoint, "process")
                 .withMeta(Knative.CAMEL_ENDPOINT_KIND, Knative.EndpointKind.sink)
                 .withMeta(Knative.SERVICE_META_URL, String.format("http://localhost:%d/knative", port))
diff --git a/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-knative/src/main/java/org/apache/camel/k/quarkus/knative/KnativeComponentApplication.java b/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-knative/src/main/java/org/apache/camel/k/quarkus/knative/KnativeComponentApplication.java
deleted file mode 100644
index 8c8245f..0000000
--- a/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-knative/src/main/java/org/apache/camel/k/quarkus/knative/KnativeComponentApplication.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * 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.quarkus.knative;
-
-import java.util.Locale;
-import java.util.Map;
-
-import javax.enterprise.context.ApplicationScoped;
-import javax.inject.Inject;
-import javax.json.Json;
-import javax.json.JsonObject;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.knative.KnativeEndpoint;
-import org.apache.camel.component.knative.spi.Knative;
-
-
-@Path("/test")
-@ApplicationScoped
-public class KnativeComponentApplication {
-    @Inject
-    CamelContext context;
-
-    @SuppressWarnings("unchecked")
-    @GET
-    @Path("/inspect")
-    @Consumes(MediaType.TEXT_PLAIN)
-    @Produces(MediaType.APPLICATION_JSON)
-    public JsonObject inspect() {
-        var endpoint = context.getEndpoint("knative:endpoint/from", KnativeEndpoint.class);
-        var envMeta = endpoint.getConfiguration().getEnvironment().lookup(Knative.Type.endpoint, "from")
-            .filter(entry -> Knative.EndpointKind.source.name().equals(entry.getMetadata().get(Knative.CAMEL_ENDPOINT_KIND)))
-            .findFirst()
-            .map(def -> Json.createObjectBuilder((Map)def.getMetadata()))
-            .orElseThrow(IllegalArgumentException::new);
-
-        return Json.createObjectBuilder()
-            .add("env-meta", envMeta)
-            .build();
-    }
-
-    @javax.enterprise.inject.Produces
-    public RouteBuilder routes() {
-        return new RouteBuilder() {
-            @Override
-            public void configure() throws Exception {
-                from("knative:endpoint/from")
-                    .transform().body(String.class, b -> b.toUpperCase(Locale.US));
-            }
-        };
-    }
-}
diff --git a/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-knative/src/main/resources/application.properties b/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-knative/src/main/resources/application.properties
index 3f6864a..3ce5493 100644
--- a/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-knative/src/main/resources/application.properties
+++ b/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-knative/src/main/resources/application.properties
@@ -21,8 +21,3 @@
 quarkus.log.console.enable = false
 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-knative/src/main/resources/env.json b/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-knative/src/main/resources/env.json
deleted file mode 100644
index 1ba0ae6..0000000
--- a/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-knative/src/main/resources/env.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-  "services": [
-    {
-      "type": "endpoint",
-      "name": "from",
-      "metadata": {
-        "service.path": "/knative",
-        "camel.endpoint.kind": "source",
-        "knative.event.type": "camel.k.evt"
-      }
-    }
-  ]
-}
\ No newline at end of file
diff --git a/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-runtime-knative/src/test/java/org/apache/camel/k/quarkus/it/KnativeIT.java b/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-knative/src/test/java/org/apache/camel/k/quarkus/it/KnativeIT.java
similarity index 100%
rename from camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-runtime-knative/src/test/java/org/apache/camel/k/quarkus/it/KnativeIT.java
rename to camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-knative/src/test/java/org/apache/camel/k/quarkus/it/KnativeIT.java
diff --git a/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-knative/src/test/java/org/apache/camel/k/quarkus/knative/KnativeComponentTest.java b/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-knative/src/test/java/org/apache/camel/k/quarkus/it/KnativeTest.java
similarity index 64%
rename from camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-knative/src/test/java/org/apache/camel/k/quarkus/knative/KnativeComponentTest.java
rename to camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-knative/src/test/java/org/apache/camel/k/quarkus/it/KnativeTest.java
index 5d05eb4..7b8e933 100644
--- a/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-knative/src/test/java/org/apache/camel/k/quarkus/knative/KnativeComponentTest.java
+++ b/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-knative/src/test/java/org/apache/camel/k/quarkus/it/KnativeTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.k.quarkus.knative;
+package org.apache.camel.k.quarkus.it;
 
 import java.time.ZonedDateTime;
 import java.time.format.DateTimeFormatter;
@@ -35,7 +35,8 @@ import static org.assertj.core.api.Assertions.assertThat;
 import static org.hamcrest.Matchers.is;
 
 @QuarkusTest
-public class KnativeComponentTest {
+public class KnativeTest {
+
     @Test
     public void inspect() {
         JsonPath p = RestAssured.given()
@@ -44,7 +45,7 @@ public class KnativeComponentTest {
             .get("/test/inspect")
             .then()
                 .statusCode(200)
-            .extract()
+                .extract()
                 .body()
                 .jsonPath();
 
@@ -55,23 +56,34 @@ public class KnativeComponentTest {
     }
 
     @Test
-    public void invoke() {
+    public void invokeEndpoint() {
         final String payload = "test";
 
         given()
             .body(payload)
             .header(Exchange.CONTENT_TYPE, "text/plain")
-            .header(CloudEvents.v1_0.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_VERSION).http(), CloudEvents.v1_0.version())
-            .header(CloudEvents.v1_0.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TYPE).http(), "org.apache.camel.event")
-            .header(CloudEvents.v1_0.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_ID).http(), "myEventID")
-            .header(CloudEvents.v1_0.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TIME).http(), DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.now()))
-            .header(CloudEvents.v1_0.mandatoryAttribute(CloudEvent.CAMEL_CLOUD_EVENT_SOURCE).http(), "/somewhere")
-        .when()
-            .post("/knative")
-        .then()
-            .statusCode(200)
-            .body(is(payload.toUpperCase()))
-            .extract()
-            .asString();
+            .header(CloudEvents.v1_0.httpAttribute(CloudEvent.CAMEL_CLOUD_EVENT_VERSION), CloudEvents.v1_0.version())
+            .header(CloudEvents.v1_0.httpAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TYPE), "org.apache.camel.event")
+            .header(CloudEvents.v1_0.httpAttribute(CloudEvent.CAMEL_CLOUD_EVENT_ID), "myEventID")
+            .header(CloudEvents.v1_0.httpAttribute(CloudEvent.CAMEL_CLOUD_EVENT_TIME), DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.now()))
+            .header(CloudEvents.v1_0.httpAttribute(CloudEvent.CAMEL_CLOUD_EVENT_SOURCE), "/somewhere")
+            .when()
+                .post("/knative")
+            .then()
+                .statusCode(200)
+                .body(is(payload.toUpperCase()));
+    }
+
+    @Test
+    public void invokeRoute() {
+        final String payload = "hello";
+
+        RestAssured.given()
+            .accept(MediaType.TEXT_PLAIN)
+            .body(payload)
+            .post("/test/execute")
+            .then()
+                .statusCode(200)
+                .body(is(payload.toUpperCase()));
     }
-}
+}
\ No newline at end of file
diff --git a/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-knative/src/test/java/org/apache/camel/k/quarkus/knative/KnativeComponentIT.java b/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-knative/src/test/java/org/apache/camel/k/quarkus/knative/KnativeComponentIT.java
deleted file mode 100644
index 23a6d20..0000000
--- a/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-knative/src/test/java/org/apache/camel/k/quarkus/knative/KnativeComponentIT.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * 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.quarkus.knative;
-
-import io.quarkus.test.junit.NativeImageTest;
-
-@NativeImageTest
-public class KnativeComponentIT extends KnativeComponentTest {
-}
\ No newline at end of file
diff --git a/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-runtime-knative/src/test/resources/routes.properties b/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-knative/src/test/resources/routes.properties
similarity index 100%
rename from camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-runtime-knative/src/test/resources/routes.properties
rename to camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-knative/src/test/resources/routes.properties
diff --git a/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-runtime-knative/src/test/resources/routes.yaml b/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-knative/src/test/resources/routes.yaml
similarity index 81%
rename from camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-runtime-knative/src/test/resources/routes.yaml
rename to camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-knative/src/test/resources/routes.yaml
index b402418..749f6dd 100644
--- a/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-runtime-knative/src/test/resources/routes.yaml
+++ b/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-knative/src/test/resources/routes.yaml
@@ -19,10 +19,19 @@
     uri: "direct:process"
     steps:
       - to: "knative:endpoint/process"
+
 - from:
     uri: "knative:endpoint/process"
     steps:
       - convert-body-to:
           type: "java.lang.String"
       - set-body:
+          simple: "${in.body.toUpperCase()}"
+
+- from:
+    uri: "knative:endpoint/from"
+    steps:
+      - convert-body-to:
+          type: "java.lang.String"
+      - set-body:
           simple: "${in.body.toUpperCase()}"
\ No newline at end of file
diff --git a/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-runtime-knative/pom.xml b/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-runtime-knative/pom.xml
deleted file mode 100644
index d722f01..0000000
--- a/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-runtime-knative/pom.xml
+++ /dev/null
@@ -1,175 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    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.
-
--->
-<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-quarkus-itests</artifactId>
-        <version>1.5.1-SNAPSHOT</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>camel-k-quarkus-itests-runtime-knative</artifactId>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.camel.k</groupId>
-            <artifactId>camel-k-runtime-quarkus</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel.k</groupId>
-            <artifactId>camel-k-quarkus-knative</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel.k</groupId>
-            <artifactId>camel-k-quarkus-loader-yaml</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel.quarkus</groupId>
-            <artifactId>camel-quarkus-direct</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>io.quarkus</groupId>
-            <artifactId>quarkus-jsonb</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>io.quarkus</groupId>
-            <artifactId>quarkus-resteasy</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>io.quarkus</groupId>
-            <artifactId>quarkus-resteasy-jsonb</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>org.codehaus.mojo</groupId>
-                <artifactId>build-helper-maven-plugin</artifactId>
-                <version>${build-helper-maven-plugin-version}</version>
-                <executions>
-                    <execution>
-                        <id>reserve-network-port</id>
-                        <goals>
-                            <goal>reserve-network-port</goal>
-                        </goals>
-                        <phase>process-resources</phase>
-                        <configuration>
-                            <portNames>
-                                <portName>test.http.port.jvm</portName>
-                                <portName>test.http.port.native</portName>
-                            </portNames>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>io.quarkus</groupId>
-                <artifactId>quarkus-maven-plugin</artifactId>
-                <version>${quarkus-version}</version>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>build</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <environmentVariables>
-                        <CAMEL_K_ROUTES>file:${project.basedir}/src/test/resources/routes.yaml</CAMEL_K_ROUTES>
-                        <CAMEL_K_CONF>${project.basedir}/src/test/resources/routes.properties</CAMEL_K_CONF>
-                        <__CAMEL_KNATIVE_CONFIGURATION>file:${project.basedir}/src/test/resources/env.json</__CAMEL_KNATIVE_CONFIGURATION>
-                        <CAMEL_KNATIVE_LISTENING_PORT>${test.http.port.jvm}</CAMEL_KNATIVE_LISTENING_PORT>
-                    </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>
-    </build>
-
-    <profiles>
-        <profile>
-            <id>native</id>
-            <activation>
-                <property>
-                    <name>native</name>
-                </property>
-            </activation>
-            <properties>
-                <quarkus.package.type>native</quarkus.package.type>
-            </properties>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.apache.maven.plugins</groupId>
-                        <artifactId>maven-failsafe-plugin</artifactId>
-                        <executions>
-                            <execution>
-                                <goals>
-                                    <goal>integration-test</goal>
-                                    <goal>verify</goal>
-                                </goals>
-                                <configuration>
-                                    <environmentVariables>
-                                        <CAMEL_K_ROUTES>file:${project.basedir}/src/test/resources/routes.yaml</CAMEL_K_ROUTES>
-                                        <CAMEL_K_CONF>${project.basedir}/src/test/resources/routes.properties</CAMEL_K_CONF>
-                                        <__CAMEL_KNATIVE_CONFIGURATION>file:${project.basedir}/src/test/resources/env.json</__CAMEL_KNATIVE_CONFIGURATION>
-                                        <CAMEL_KNATIVE_LISTENING_PORT>${test.http.port.native}</CAMEL_KNATIVE_LISTENING_PORT>
-                                    </environmentVariables>
-                                    <systemProperties>
-                                        <quarkus.http.test-port>${test.http.port.native}</quarkus.http.test-port>
-                                        <native.image.path>${project.build.directory}/${project.build.finalName}-runner</native.image.path>
-                                    </systemProperties>
-                                </configuration>
-                            </execution>
-                        </executions>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-    </profiles>
-
-</project>
diff --git a/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-runtime-knative/src/main/resources/application.properties b/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-runtime-knative/src/main/resources/application.properties
deleted file mode 100644
index 3ce5493..0000000
--- a/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-runtime-knative/src/main/resources/application.properties
+++ /dev/null
@@ -1,23 +0,0 @@
-## ---------------------------------------------------------------------------
-## 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 = false
-quarkus.banner.enabled     = false
-
diff --git a/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-runtime-knative/src/test/java/org/apache/camel/k/quarkus/it/KnativeTest.java b/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-runtime-knative/src/test/java/org/apache/camel/k/quarkus/it/KnativeTest.java
deleted file mode 100644
index 7e093ca..0000000
--- a/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-runtime-knative/src/test/java/org/apache/camel/k/quarkus/it/KnativeTest.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * 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.quarkus.it;
-
-import javax.ws.rs.core.MediaType;
-
-import io.quarkus.test.junit.QuarkusTest;
-import io.restassured.RestAssured;
-import org.junit.jupiter.api.Test;
-
-import static org.hamcrest.Matchers.is;
-
-@QuarkusTest
-public class KnativeTest {
-    @Test
-    public void invoke() {
-        final String payload = "hello";
-
-        RestAssured.given()
-            .accept(MediaType.TEXT_PLAIN)
-            .body(payload)
-            .post("/test/execute")
-            .then()
-                .statusCode(200)
-                .body(is(payload.toUpperCase()));
-    }
-}
\ No newline at end of file
diff --git a/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-runtime-knative/src/test/resources/env.json b/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-runtime-knative/src/test/resources/env.json
deleted file mode 100644
index 4c3e66c..0000000
--- a/camel-k-quarkus/camel-k-quarkus-itests/camel-k-quarkus-itests-runtime-knative/src/test/resources/env.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "services": [
-    {
-      "type": "endpoint",
-      "name": "process",
-      "metadata": {
-        "camel.endpoint.kind": "source",
-        "service.path": "/knative"
-      }
-    },
-    {
-      "type": "endpoint",
-      "name": "process",
-      "metadata": {
-        "service.url": "http://localhost:{{env:HTTP_TEST_PORT}}/knative",
-        "camel.endpoint.kind": "sink"
-      }
-    }
-  ]
-}
\ 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 302aed9..e75e73e 100644
--- a/camel-k-quarkus/camel-k-quarkus-itests/pom.xml
+++ b/camel-k-quarkus/camel-k-quarkus-itests/pom.xml
@@ -44,7 +44,6 @@
         <module>camel-k-quarkus-itests-polyglot</module>
         <module>camel-k-quarkus-itests-runtime</module>
         <module>camel-k-quarkus-itests-runtime-kamelet</module>
-        <module>camel-k-quarkus-itests-runtime-knative</module>
     </modules>
 
 </project>
diff --git a/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/CloudEvent.java b/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/CloudEvent.java
index bc92f38..d044629 100644
--- a/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/CloudEvent.java
+++ b/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/CloudEvent.java
@@ -65,6 +65,20 @@ public interface CloudEvent {
                 .orElseThrow(() -> new IllegalArgumentException("Unable to find attribute with id: " + id));
     }
 
+    /**
+     * Mandatory find http attribute by id.
+     */
+    default String httpAttribute(String id) {
+        return mandatoryAttribute(id).http();
+    }
+
+    /**
+     * Mandatory find json attribute by id.
+     */
+    default String jsonAttribute(String id) {
+        return mandatoryAttribute(id).json();
+    }
+
     interface Attribute {
         /**
          * The ID of the attributes, can be used to look it up.