You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by pp...@apache.org on 2021/07/29 06:08:41 UTC

[camel-quarkus] branch main updated (55bf8c6 -> c8dd89c)

This is an automated email from the ASF dual-hosted git repository.

ppalaga pushed a change to branch main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git.


    from 55bf8c6  Updated CHANGELOG.md
     new c1e13ba  Test rollback() EIP #2628
     new 9fda028  Test roundRobin() EIP #2628
     new 3f010f7  Test routingSlip() EIP #2628
     new 56bd770  Test sample() EIP #2628
     new 9c96fad  Test script().groovy() EIP #2628
     new cb0dfa3  Fix and test serviceCall EIP #2628, fix #2952
     new bbd4931  Test step() EIP method #2628
     new f74e993  Test sticky() EIP DSL method #2628
     new bf776c9  Test resequence().stream() EIP DSL method #2628
     new c8dd89c  Keep consul-client in sync with Camel

The 10 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../core/cloud/deployment/CloudProcessor.java      |  41 +++---
 extensions-core/http-common/deployment/pom.xml     |   4 +
 extensions-core/http-common/runtime/pom.xml        |   4 +
 extensions-jvm/dns/deployment/pom.xml              |   4 +
 extensions-jvm/dns/runtime/pom.xml                 |   4 +
 extensions-jvm/etcd/deployment/pom.xml             |   4 +
 extensions-jvm/etcd/runtime/pom.xml                |   4 +
 extensions-jvm/groovy/integration-test/pom.xml     |  29 ++++
 .../component/groovy/it/GroovyResource.java        |  38 ++---
 .../quarkus/component/groovy/it/GroovyRoutes.java  |  10 +-
 .../quarkus/component/groovy/it/GroovyTest.java    |  13 +-
 extensions-jvm/ribbon/deployment/pom.xml           |   4 +
 extensions-jvm/ribbon/runtime/pom.xml              |   4 +
 extensions-jvm/zookeeper/deployment/pom.xml        |   4 +
 extensions-jvm/zookeeper/runtime/pom.xml           |   4 +
 extensions/kubernetes/deployment/pom.xml           |   4 +
 extensions/kubernetes/runtime/pom.xml              |   4 +
 integration-test-groups/foundation/eip/pom.xml     |   5 +
 .../apache/camel/quarkus/eip/it/EipResource.java   |  10 +-
 .../org/apache/camel/quarkus/eip/it/EipRoutes.java |  24 ++++
 .../org/apache/camel/quarkus/eip/it/EipTest.java   | 153 +++++++++++++++++++++
 integration-tests/foundation-grouped/pom.xml       |   5 +
 .../camel/quarkus/component/http/it/HttpRoute.java |  11 ++
 .../camel/quarkus/component/http/it/HttpTest.java  |  14 ++
 .../quarkus/component/jta/it/JtaResource.java      |  70 +++-------
 .../camel/quarkus/component/jta/it/JtaRoutes.java  |  45 +++++-
 .../camel/quarkus/component/jta/it/JtaTest.java    |  54 +++++---
 pom.xml                                            |   2 +-
 28 files changed, 446 insertions(+), 126 deletions(-)
 copy extensions/protobuf/deployment/src/main/java/org/apache/camel/quarkus/component/protobuf/deployment/ProtobufProcessor.java => extensions-core/core-cloud/deployment/src/main/java/org/apache/camel/quarkus/core/cloud/deployment/CloudProcessor.java (56%)
 copy integration-test-groups/foundation/core-languages/src/main/java/org/apache/camel/quarkus/core/languages/it/HeaderLanguageRoutes.java => extensions-jvm/groovy/integration-test/src/main/java/org/apache/camel/quarkus/component/groovy/it/GroovyRoutes.java (75%)

[camel-quarkus] 08/10: Test sticky() EIP DSL method #2628

Posted by pp...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ppalaga pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit f74e9933f46d1e8a670c7f07b74f7b96aab8c842
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Wed Jul 28 15:34:10 2021 +0200

    Test sticky() EIP DSL method #2628
---
 .../org/apache/camel/quarkus/eip/it/EipRoutes.java |  4 ++++
 .../org/apache/camel/quarkus/eip/it/EipTest.java   | 26 ++++++++++++++++++++++
 2 files changed, 30 insertions(+)

diff --git a/integration-test-groups/foundation/eip/src/main/java/org/apache/camel/quarkus/eip/it/EipRoutes.java b/integration-test-groups/foundation/eip/src/main/java/org/apache/camel/quarkus/eip/it/EipRoutes.java
index 360716f..15e24e6 100644
--- a/integration-test-groups/foundation/eip/src/main/java/org/apache/camel/quarkus/eip/it/EipRoutes.java
+++ b/integration-test-groups/foundation/eip/src/main/java/org/apache/camel/quarkus/eip/it/EipRoutes.java
@@ -48,6 +48,10 @@ public class EipRoutes extends RouteBuilder {
                 .loadBalance().roundRobin()
                 .to("mock:roundRobinLoadBalancer1", "mock:roundRobinLoadBalancer2");
 
+        from("direct:stickyLoadBalancer")
+                .loadBalance().sticky(header("stickyKey"))
+                .to("mock:stickyLoadBalancer1", "mock:stickyLoadBalancer2");
+
         from("direct:enrich")
                 .enrich("direct:prepend-hello");
 
diff --git a/integration-test-groups/foundation/eip/src/test/java/org/apache/camel/quarkus/eip/it/EipTest.java b/integration-test-groups/foundation/eip/src/test/java/org/apache/camel/quarkus/eip/it/EipTest.java
index df94356..bee463e 100644
--- a/integration-test-groups/foundation/eip/src/test/java/org/apache/camel/quarkus/eip/it/EipTest.java
+++ b/integration-test-groups/foundation/eip/src/test/java/org/apache/camel/quarkus/eip/it/EipTest.java
@@ -98,6 +98,32 @@ class EipTest {
     }
 
     @Test
+    public void stickyLoadBalancer() {
+        final List<String> messages = Arrays.asList("a", "b", "c", "d");
+        int i = 0;
+        for (String msg : messages) {
+            RestAssured.given()
+                    .contentType(ContentType.TEXT)
+                    .queryParam("stickyKey", String.valueOf(1 + (i++ % 2)))
+                    .body(msg)
+                    .post("/eip/route/stickyLoadBalancer")
+                    .then()
+                    .statusCode(200);
+        }
+
+        RestAssured.get("/eip/mock/stickyLoadBalancer1/2/10000/body")
+                .then()
+                .statusCode(200)
+                .body(Matchers.is("a,c"));
+
+        RestAssured.get("/eip/mock/stickyLoadBalancer2/2/10000/body")
+                .then()
+                .statusCode(200)
+                .body(Matchers.is("b,d"));
+
+    }
+
+    @Test
     public void enrich() {
         RestAssured.given()
                 .contentType(ContentType.TEXT)

[camel-quarkus] 09/10: Test resequence().stream() EIP DSL method #2628

Posted by pp...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ppalaga pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit bf776c9508a6a0b6a5b1256aaf2e5a8472ef5f7a
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Wed Jul 28 18:20:05 2021 +0200

    Test resequence().stream() EIP DSL method #2628
---
 .../org/apache/camel/quarkus/eip/it/EipRoutes.java  |  5 +++++
 .../org/apache/camel/quarkus/eip/it/EipTest.java    | 21 +++++++++++++++++++++
 2 files changed, 26 insertions(+)

diff --git a/integration-test-groups/foundation/eip/src/main/java/org/apache/camel/quarkus/eip/it/EipRoutes.java b/integration-test-groups/foundation/eip/src/main/java/org/apache/camel/quarkus/eip/it/EipRoutes.java
index 15e24e6..673ab4d 100644
--- a/integration-test-groups/foundation/eip/src/main/java/org/apache/camel/quarkus/eip/it/EipRoutes.java
+++ b/integration-test-groups/foundation/eip/src/main/java/org/apache/camel/quarkus/eip/it/EipRoutes.java
@@ -104,6 +104,11 @@ public class EipRoutes extends RouteBuilder {
                 .step("foo")
                 .setBody(e -> "Hello " + e.getMessage().getBody(String.class) + " from step!");
 
+        from("direct:resequenceStream")
+                .resequence(header("seqno"))
+                .stream().capacity(4).timeout(3000)
+                .to("mock:resequenceStream");
+
     }
 
     @Produces
diff --git a/integration-test-groups/foundation/eip/src/test/java/org/apache/camel/quarkus/eip/it/EipTest.java b/integration-test-groups/foundation/eip/src/test/java/org/apache/camel/quarkus/eip/it/EipTest.java
index bee463e..7277e81 100644
--- a/integration-test-groups/foundation/eip/src/test/java/org/apache/camel/quarkus/eip/it/EipTest.java
+++ b/integration-test-groups/foundation/eip/src/test/java/org/apache/camel/quarkus/eip/it/EipTest.java
@@ -387,4 +387,25 @@ class EipTest {
 
     }
 
+    @Test
+    public void resequenceStream() {
+        final List<String> messages = Arrays.asList("a:2", "b:1", "c:4", "d:3");
+        for (String input : messages) {
+            String[] message = input.split(":");
+            RestAssured.given()
+                    .contentType(ContentType.TEXT)
+                    .queryParam("seqno", message[1])
+                    .body(message[0])
+                    .post("/eip/route/resequenceStream")
+                    .then()
+                    .statusCode(200);
+        }
+
+        RestAssured.get("/eip/mock/resequenceStream/4/10000/body")
+                .then()
+                .statusCode(200)
+                .body(Matchers.is("b,a,d,c"));
+
+    }
+
 }

[camel-quarkus] 02/10: Test roundRobin() EIP #2628

Posted by pp...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ppalaga pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit 9fda0283b19298b782894f0146f6f5504a000b30
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Fri Jul 23 19:10:13 2021 +0200

    Test roundRobin() EIP #2628
---
 .../org/apache/camel/quarkus/eip/it/EipRoutes.java |  4 ++++
 .../org/apache/camel/quarkus/eip/it/EipTest.java   | 24 ++++++++++++++++++++++
 2 files changed, 28 insertions(+)

diff --git a/integration-test-groups/foundation/eip/src/main/java/org/apache/camel/quarkus/eip/it/EipRoutes.java b/integration-test-groups/foundation/eip/src/main/java/org/apache/camel/quarkus/eip/it/EipRoutes.java
index 027a174..6258215 100644
--- a/integration-test-groups/foundation/eip/src/main/java/org/apache/camel/quarkus/eip/it/EipRoutes.java
+++ b/integration-test-groups/foundation/eip/src/main/java/org/apache/camel/quarkus/eip/it/EipRoutes.java
@@ -44,6 +44,10 @@ public class EipRoutes extends RouteBuilder {
                 .loadBalance().custom("roundRobin")
                 .to("mock:customLoadBalancer1", "mock:customLoadBalancer2");
 
+        from("direct:roundRobinLoadBalancer")
+                .loadBalance().roundRobin()
+                .to("mock:roundRobinLoadBalancer1", "mock:roundRobinLoadBalancer2");
+
         from("direct:enrich")
                 .enrich("direct:prepend-hello");
 
diff --git a/integration-test-groups/foundation/eip/src/test/java/org/apache/camel/quarkus/eip/it/EipTest.java b/integration-test-groups/foundation/eip/src/test/java/org/apache/camel/quarkus/eip/it/EipTest.java
index 9b5ad62..423cb32 100644
--- a/integration-test-groups/foundation/eip/src/test/java/org/apache/camel/quarkus/eip/it/EipTest.java
+++ b/integration-test-groups/foundation/eip/src/test/java/org/apache/camel/quarkus/eip/it/EipTest.java
@@ -70,6 +70,30 @@ class EipTest {
     }
 
     @Test
+    public void roundRobinLoadBalancer() {
+        final List<String> messages = Arrays.asList("a", "b", "c", "d");
+        for (String msg : messages) {
+            RestAssured.given()
+                    .contentType(ContentType.TEXT)
+                    .body(msg)
+                    .post("/eip/route/roundRobinLoadBalancer")
+                    .then()
+                    .statusCode(200);
+        }
+
+        RestAssured.get("/eip/mock/roundRobinLoadBalancer1/2/10000/body")
+                .then()
+                .statusCode(200)
+                .body(Matchers.is("a,c"));
+
+        RestAssured.get("/eip/mock/roundRobinLoadBalancer2/2/10000/body")
+                .then()
+                .statusCode(200)
+                .body(Matchers.is("b,d"));
+
+    }
+
+    @Test
     public void enrich() {
         RestAssured.given()
                 .contentType(ContentType.TEXT)

[camel-quarkus] 03/10: Test routingSlip() EIP #2628

Posted by pp...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ppalaga pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit 3f010f744364d809ea8bafbf0adcf08aadad584c
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Fri Jul 23 21:35:07 2021 +0200

    Test routingSlip() EIP #2628
---
 .../org/apache/camel/quarkus/eip/it/EipRoutes.java |  3 ++
 .../org/apache/camel/quarkus/eip/it/EipTest.java   | 35 ++++++++++++++++++++++
 2 files changed, 38 insertions(+)

diff --git a/integration-test-groups/foundation/eip/src/main/java/org/apache/camel/quarkus/eip/it/EipRoutes.java b/integration-test-groups/foundation/eip/src/main/java/org/apache/camel/quarkus/eip/it/EipRoutes.java
index 6258215..0fe86eb 100644
--- a/integration-test-groups/foundation/eip/src/main/java/org/apache/camel/quarkus/eip/it/EipRoutes.java
+++ b/integration-test-groups/foundation/eip/src/main/java/org/apache/camel/quarkus/eip/it/EipRoutes.java
@@ -89,6 +89,9 @@ public class EipRoutes extends RouteBuilder {
                 .removeProperties("propertyToRemove.*")
                 .to("mock:removeProperties");
 
+        from("direct:routingSlip")
+                .routingSlip(header("routingSlipHeader"));
+
     }
 
     @Produces
diff --git a/integration-test-groups/foundation/eip/src/test/java/org/apache/camel/quarkus/eip/it/EipTest.java b/integration-test-groups/foundation/eip/src/test/java/org/apache/camel/quarkus/eip/it/EipTest.java
index 423cb32..41fd986 100644
--- a/integration-test-groups/foundation/eip/src/test/java/org/apache/camel/quarkus/eip/it/EipTest.java
+++ b/integration-test-groups/foundation/eip/src/test/java/org/apache/camel/quarkus/eip/it/EipTest.java
@@ -279,4 +279,39 @@ class EipTest {
 
     }
 
+    @Test
+    public void routingSlip() {
+        RestAssured.given()
+                .contentType(ContentType.TEXT)
+                .body("message-1")
+                .queryParam("routingSlipHeader", "mock:routingSlip1,mock:routingSlip2")
+                .post("/eip/route/routingSlip")
+                .then()
+                .statusCode(200);
+
+        RestAssured.given()
+                .contentType(ContentType.TEXT)
+                .body("message-2")
+                .queryParam("routingSlipHeader", "mock:routingSlip2,mock:routingSlip3")
+                .post("/eip/route/routingSlip")
+                .then()
+                .statusCode(200);
+
+        RestAssured.get("/eip/mock/routingSlip1/1/5000/body")
+                .then()
+                .statusCode(200)
+                .body(Matchers.is("message-1"));
+
+        RestAssured.get("/eip/mock/routingSlip2/2/5000/body")
+                .then()
+                .statusCode(200)
+                .body(Matchers.is("message-1,message-2"));
+
+        RestAssured.get("/eip/mock/routingSlip3/1/5000/body")
+                .then()
+                .statusCode(200)
+                .body(Matchers.is("message-2"));
+
+    }
+
 }

[camel-quarkus] 01/10: Test rollback() EIP #2628

Posted by pp...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ppalaga pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit c1e13bad0419003f876d39fa412c973a8902831d
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Fri Jul 23 18:57:11 2021 +0200

    Test rollback() EIP #2628
---
 .../quarkus/component/jta/it/JtaResource.java      | 70 +++++++---------------
 .../camel/quarkus/component/jta/it/JtaRoutes.java  | 45 ++++++++++++--
 .../camel/quarkus/component/jta/it/JtaTest.java    | 54 +++++++++++------
 3 files changed, 96 insertions(+), 73 deletions(-)

diff --git a/integration-tests/jta/src/main/java/org/apache/camel/quarkus/component/jta/it/JtaResource.java b/integration-tests/jta/src/main/java/org/apache/camel/quarkus/component/jta/it/JtaResource.java
index 588f8d9..c67c9b9 100644
--- a/integration-tests/jta/src/main/java/org/apache/camel/quarkus/component/jta/it/JtaResource.java
+++ b/integration-tests/jta/src/main/java/org/apache/camel/quarkus/component/jta/it/JtaResource.java
@@ -20,10 +20,10 @@ import java.net.URI;
 import java.sql.Connection;
 import java.sql.SQLException;
 import java.sql.Statement;
-import java.util.List;
+import java.util.stream.Collectors;
 
-import javax.annotation.PostConstruct;
 import javax.enterprise.context.ApplicationScoped;
+import javax.enterprise.event.Observes;
 import javax.inject.Inject;
 import javax.transaction.Transactional;
 import javax.ws.rs.Consumes;
@@ -38,10 +38,9 @@ import javax.ws.rs.core.Response;
 import io.agroal.api.AgroalDataSource;
 import io.quarkus.agroal.DataSource;
 import org.apache.camel.CamelContext;
-import org.apache.camel.Exchange;
-import org.apache.camel.Message;
 import org.apache.camel.ProducerTemplate;
 import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.quarkus.main.events.AfterStart;
 import org.jboss.logging.Logger;
 
 @Path("/jta")
@@ -59,16 +58,16 @@ public class JtaResource {
     @Inject
     CamelContext context;
 
-    @PostConstruct
-    void postConstruct() throws SQLException {
+    void postConstruct(@Observes AfterStart event) throws SQLException {
         try (Connection conn = dataSource.getConnection()) {
             try (Statement statement = conn.createStatement()) {
+                LOG.info("Recreating table 'example'");
                 try {
                     statement.execute("drop table example");
                 } catch (Exception ignored) {
                 }
                 statement.execute(
-                        "create table example (id serial primary key, message varchar(255) not null, origin varchar(5) not null)");
+                        "create table example (id serial primary key, message varchar(255) not null, origin varchar(255) not null)");
             }
         }
     }
@@ -96,60 +95,31 @@ public class JtaResource {
         return post(policy, message);
     }
 
-    @Path("/jdbc")
+    @Path("/route/{route}")
     @POST
     @Consumes(MediaType.TEXT_PLAIN)
     @Produces(MediaType.TEXT_PLAIN)
-    public Response jdbc(String message) throws Exception {
-        String response = request("direct:jdbc", message);
-        LOG.infof("Got response from jdbc: %s", response);
+    public Response route(@PathParam("route") String route, String message) throws Exception {
+        LOG.infof("message is %s", message);
+        String response = producerTemplate.requestBody("direct:" + route, message, String.class);
+        LOG.infof("Got response from %s: %s", route, response);
         return Response
                 .created(new URI("https://camel.apache.org/"))
                 .entity(response)
                 .build();
     }
 
-    @Path("/sqltx")
-    @POST
-    @Consumes(MediaType.TEXT_PLAIN)
+    @Path("/mock/{name}/{count}/{timeout}")
     @Produces(MediaType.TEXT_PLAIN)
-    public Response sqltx(String message) throws Exception {
-        String response = request("direct:sqltx", message);
-        LOG.infof("Got response from sqltx: %s", response);
-        return Response
-                .created(new URI("https://camel.apache.org/"))
-                .entity(response)
-                .build();
-    }
-
-    private String request(String endpoint, String message) throws Exception {
-        LOG.infof("message is %s", message);
-        MockEndpoint mockEndpoint = context.getEndpoint("mock:txResult", MockEndpoint.class);
-        mockEndpoint.reset();
-        if (!message.equals("fail")) {
-            mockEndpoint.expectedMessageCount(1);
-            mockEndpoint.message(0).body().isEqualTo(message);
-        }
-        final String response = producerTemplate.requestBody(endpoint, message, String.class);
-        mockEndpoint.assertIsSatisfied(15000);
-
-        return response;
-    }
-
-    @Path("/mock")
     @GET
-    @Consumes(MediaType.TEXT_PLAIN)
-    @Produces(MediaType.TEXT_PLAIN)
-    public Response mock() throws Exception {
-        MockEndpoint mockEndpoint = context.getEndpoint("mock:txResult", MockEndpoint.class);
-        List<Exchange> exchanges = mockEndpoint.getExchanges();
-        if (exchanges.isEmpty()) {
-            return Response.ok().entity("empty").build();
-        } else {
-            Message message = exchanges.get(0).getMessage();
-
-            LOG.infof("mock message is " + message.getBody());
-            return Response.ok().entity(message.getBody()).build();
+    public String mock(@PathParam("name") String name, @PathParam("count") int count, @PathParam("timeout") int timeout) {
+        MockEndpoint mock = context.getEndpoint("mock:" + name, MockEndpoint.class);
+        mock.setExpectedMessageCount(count);
+        try {
+            mock.assertIsSatisfied(timeout);
+        } catch (InterruptedException e1) {
+            Thread.currentThread().interrupt();
         }
+        return mock.getExchanges().stream().map(e -> e.getMessage().getBody(String.class)).collect(Collectors.joining(","));
     }
 }
diff --git a/integration-tests/jta/src/main/java/org/apache/camel/quarkus/component/jta/it/JtaRoutes.java b/integration-tests/jta/src/main/java/org/apache/camel/quarkus/component/jta/it/JtaRoutes.java
index 2828635..dec524f 100644
--- a/integration-tests/jta/src/main/java/org/apache/camel/quarkus/component/jta/it/JtaRoutes.java
+++ b/integration-tests/jta/src/main/java/org/apache/camel/quarkus/component/jta/it/JtaRoutes.java
@@ -51,11 +51,11 @@ public class JtaRoutes extends RouteBuilder {
         from("direct:jdbc")
                 .transacted()
                 .setHeader("message", body())
-                .to("jms:queue:txTest?connectionFactory=#xaConnectionFactory&disableReplyTo=true")
+                .to("jms:queue:jdbc?connectionFactory=#xaConnectionFactory&disableReplyTo=true")
                 .transform().simple("insert into example(message, origin) values ('${body}', 'jdbc')")
                 .to("jdbc:camel-ds?resetAutoCommit=false")
                 .choice()
-                .when(header("message").startsWith("fail"))
+                .when(header("message").startsWith("rollback"))
                 .log("Failing forever with exception")
                 .process(x -> {
                     throw new RuntimeException("Fail");
@@ -63,14 +63,32 @@ public class JtaRoutes extends RouteBuilder {
                 .otherwise()
                 .transform().simple("${header.message} added")
                 .endChoice();
+        from("jms:queue:jdbc?connectionFactory=#xaConnectionFactory")
+                .to("mock:jdbc");
+
+        from("direct:jdbcRollback")
+                .transacted()
+                .setHeader("message", body())
+                .to("jms:queue:jdbcRollback?connectionFactory=#xaConnectionFactory&disableReplyTo=true")
+                .transform().simple("insert into example(message, origin) values ('${body}', 'jdbcRollback')")
+                .to("jdbc:camel-ds?resetAutoCommit=false")
+                .choice()
+                .when(header("message").startsWith("rollback"))
+                .log("Rolling back after rollback message")
+                .rollback()
+                .otherwise()
+                .transform().simple("${header.message} added")
+                .endChoice();
+        from("jms:queue:jdbcRollback?connectionFactory=#xaConnectionFactory")
+                .to("mock:jdbcRollback");
 
         from("direct:sqltx")
                 .transacted()
                 .setHeader("message", body())
-                .to("jms:queue:txTest?connectionFactory=#xaConnectionFactory&disableReplyTo=true")
+                .to("jms:queue:sqltx?connectionFactory=#xaConnectionFactory&disableReplyTo=true")
                 .to("sql:insert into example(message, origin) values (:#message, 'sqltx')")
                 .choice()
-                .when(header("message").startsWith("fail"))
+                .when(header("message").startsWith("rollback"))
                 .log("Failing forever with exception")
                 .process(x -> {
                     throw new RuntimeException("Fail");
@@ -78,8 +96,23 @@ public class JtaRoutes extends RouteBuilder {
                 .otherwise()
                 .transform().simple("${header.message} added")
                 .endChoice();
+        from("jms:queue:sqltx?connectionFactory=#xaConnectionFactory")
+                .to("mock:sqltx");
+
+        from("direct:sqltxRollback")
+                .transacted()
+                .setHeader("message", body())
+                .to("jms:queue:sqltxRollback?connectionFactory=#xaConnectionFactory&disableReplyTo=true")
+                .to("sql:insert into example(message, origin) values (:#message, 'sqltxRollback')")
+                .choice()
+                .when(header("message").startsWith("rollback"))
+                .log("Rolling back after rollback message")
+                .rollback()
+                .otherwise()
+                .transform().simple("${header.message} added")
+                .endChoice();
+        from("jms:queue:sqltxRollback?connectionFactory=#xaConnectionFactory")
+                .to("mock:sqltxRollback");
 
-        from("jms:queue:txTest?connectionFactory=#xaConnectionFactory")
-                .to("mock:txResult");
     }
 }
diff --git a/integration-tests/jta/src/test/java/org/apache/camel/quarkus/component/jta/it/JtaTest.java b/integration-tests/jta/src/test/java/org/apache/camel/quarkus/component/jta/it/JtaTest.java
index 3c32225..146f351 100644
--- a/integration-tests/jta/src/test/java/org/apache/camel/quarkus/component/jta/it/JtaTest.java
+++ b/integration-tests/jta/src/test/java/org/apache/camel/quarkus/component/jta/it/JtaTest.java
@@ -21,6 +21,7 @@ import java.sql.DriverManager;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.sql.Statement;
+import java.util.UUID;
 
 import io.quarkus.test.common.QuarkusTestResource;
 import io.quarkus.test.common.ResourceArg;
@@ -29,6 +30,7 @@ import io.quarkus.test.junit.QuarkusTest;
 import io.restassured.RestAssured;
 import io.restassured.http.ContentType;
 import org.apache.camel.quarkus.test.support.activemq.ActiveMQTestResource;
+import org.hamcrest.Matchers;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
@@ -150,47 +152,65 @@ class JtaTest {
     }
 
     @ParameterizedTest
-    @ValueSource(strings = { "jdbc", "sqltx" })
-    public void testTx(String url) throws SQLException {
-        final String msg = java.util.UUID.randomUUID().toString().replace("-", "");
+    @ValueSource(strings = { "jdbc", "jdbcRollback", "sqltx", "sqltxRollback" })
+    public void testTx(String endpoint) throws SQLException {
+        final String msg = endpoint + ":" + UUID.randomUUID().toString().replace("-", "");
+
+        assertDBRows(endpoint);
+        RestAssured.get("/jta/mock/" + endpoint + "/0/1000")
+                .then()
+                .statusCode(200)
+                .body(Matchers.is(""));
 
         RestAssured.given()
                 .contentType(ContentType.TEXT)
                 .body(msg)
-                .post("/jta/" + url)
+                .post("/jta/route/" + endpoint)
                 .then()
                 .statusCode(201)
                 .body(is(msg + " added"));
 
         // One row inserted
-        assertDBRowCount(url, 1);
+        assertDBRows(endpoint, msg);
+        RestAssured.get("/jta/mock/" + endpoint + "/1/15000")
+                .then()
+                .statusCode(200)
+                .body(Matchers.is(msg));
 
         RestAssured.given()
                 .contentType(ContentType.TEXT)
-                .body("fail")
-                .post("/jta/" + url)
+                .body("rollback")
+                .post("/jta/route/" + endpoint)
                 .then()
                 .statusCode(500);
 
         // Should still have the original row as the other insert attempt was rolled back
-        assertDBRowCount(url, 1);
-
-        RestAssured.given()
-                .contentType(ContentType.TEXT)
-                .get("/jta/mock")
+        assertDBRows(endpoint, msg);
+        RestAssured.get("/jta/mock/" + endpoint + "/1/15000")
                 .then()
                 .statusCode(200)
-                .body(is("empty"))
-                .log();
+                .body(Matchers.is(msg));
     }
 
-    private void assertDBRowCount(String source, int expectedRowCount) throws SQLException {
+    private void assertDBRows(String source, String... expectedMessages) throws SQLException {
         try (Connection connection = DriverManager.getConnection("jdbc:h2:tcp://localhost/mem:test")) {
             try (Statement statement = connection.createStatement()) {
                 try (ResultSet resultSet = statement
-                        .executeQuery("SELECT count(*) FROM example WHERE origin = '" + source + "'")) {
+                        .executeQuery("SELECT message FROM example WHERE origin = '" + source + "' ORDER BY id")) {
+                    int i = 0;
+                    for (; i < expectedMessages.length; i++) {
+                        String expectedMessage = expectedMessages[i];
+                        if (resultSet.next()) {
+                            Assertions.assertEquals(expectedMessage, resultSet.getString(1));
+                        } else {
+                            Assertions
+                                    .fail("Expected message '" + expectedMessage + "' for origin '" + source + "' at index " + i
+                                            + "; found: end of list");
+                        }
+                    }
                     if (resultSet.next()) {
-                        Assertions.assertEquals(expectedRowCount, resultSet.getInt(1));
+                        Assertions.fail("Expected end of list '" + source + "' at index " + i + "; found message: "
+                                + resultSet.getString(1));
                     }
                 }
             }

[camel-quarkus] 05/10: Test script().groovy() EIP #2628

Posted by pp...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ppalaga pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit 9c96fada8bbb25f6f73c3e05722a229d1b2759df
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Tue Jul 27 13:48:34 2021 +0200

    Test script().groovy() EIP #2628
---
 extensions-jvm/groovy/integration-test/pom.xml     | 29 +++++++++++++++++
 .../component/groovy/it/GroovyResource.java        | 38 ++++++++++++----------
 .../quarkus/component/groovy/it/GroovyRoutes.java} | 21 +++++-------
 .../quarkus/component/groovy/it/GroovyTest.java    | 13 +++++---
 4 files changed, 68 insertions(+), 33 deletions(-)

diff --git a/extensions-jvm/groovy/integration-test/pom.xml b/extensions-jvm/groovy/integration-test/pom.xml
index 20c744e..d1640a1 100644
--- a/extensions-jvm/groovy/integration-test/pom.xml
+++ b/extensions-jvm/groovy/integration-test/pom.xml
@@ -30,12 +30,28 @@
     <name>Camel Quarkus :: Groovy :: Integration Test</name>
     <description>Integration tests for Camel Quarkus Groovy extension</description>
 
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.apache.camel.quarkus</groupId>
+                <artifactId>camel-quarkus-bom-test</artifactId>
+                <version>${project.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-groovy</artifactId>
         </dependency>
         <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-direct</artifactId>
+        </dependency>
+        <dependency>
             <groupId>io.quarkus</groupId>
             <artifactId>quarkus-resteasy</artifactId>
         </dependency>
@@ -55,6 +71,19 @@
         <!-- The following dependencies guarantee that this module is built after them. You can update them by running `mvn process-resources -Pformat -N` from the source tree root directory -->
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-direct-deployment</artifactId>
+            <version>${project.version}</version>
+            <type>pom</type>
+            <scope>test</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>*</groupId>
+                    <artifactId>*</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-groovy-deployment</artifactId>
             <version>${project.version}</version>
             <type>pom</type>
diff --git a/extensions-jvm/groovy/integration-test/src/main/java/org/apache/camel/quarkus/component/groovy/it/GroovyResource.java b/extensions-jvm/groovy/integration-test/src/main/java/org/apache/camel/quarkus/component/groovy/it/GroovyResource.java
index ffe67ff..a14223c 100644
--- a/extensions-jvm/groovy/integration-test/src/main/java/org/apache/camel/quarkus/component/groovy/it/GroovyResource.java
+++ b/extensions-jvm/groovy/integration-test/src/main/java/org/apache/camel/quarkus/component/groovy/it/GroovyResource.java
@@ -16,36 +16,40 @@
  */
 package org.apache.camel.quarkus.component.groovy.it;
 
+import java.util.AbstractMap;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.stream.Collectors;
+
 import javax.enterprise.context.ApplicationScoped;
 import javax.inject.Inject;
-import javax.ws.rs.GET;
+import javax.ws.rs.Consumes;
+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.Context;
 import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
+import javax.ws.rs.core.UriInfo;
 
-import org.apache.camel.CamelContext;
-import org.jboss.logging.Logger;
+import org.apache.camel.ProducerTemplate;
 
 @Path("/groovy")
 @ApplicationScoped
 public class GroovyResource {
 
-    private static final Logger LOG = Logger.getLogger(GroovyResource.class);
-
-    private static final String LANGUAGE_GROOVY = "groovy";
     @Inject
-    CamelContext context;
+    ProducerTemplate producerTemplate;
 
-    @Path("/load/language/groovy")
-    @GET
+    @Path("/route/{route}")
+    @POST
+    @Consumes(MediaType.TEXT_PLAIN)
     @Produces(MediaType.TEXT_PLAIN)
-    public Response loadLanguageGroovy() throws Exception {
-        /* This is an autogenerated test */
-        if (context.resolveLanguage(LANGUAGE_GROOVY) != null) {
-            return Response.ok().build();
-        }
-        LOG.warnf("Could not load [%s] from the Camel context", LANGUAGE_GROOVY);
-        return Response.status(500, LANGUAGE_GROOVY + " could not be loaded from the Camel context").build();
+    public String route(String statement, @PathParam("route") String route, @Context UriInfo uriInfo) {
+        final Map<String, Object> headers = uriInfo.getQueryParameters().entrySet().stream()
+                .map(e -> new AbstractMap.SimpleImmutableEntry<String, Object>(e.getKey(), e.getValue().get(0)))
+                .collect(Collectors.toMap(Entry::getKey, Entry::getValue));
+        return producerTemplate.requestBodyAndHeaders("direct:" + route, statement, headers, String.class);
     }
+
 }
diff --git a/extensions-jvm/groovy/integration-test/src/test/java/org/apache/camel/quarkus/component/groovy/it/GroovyTest.java b/extensions-jvm/groovy/integration-test/src/main/java/org/apache/camel/quarkus/component/groovy/it/GroovyRoutes.java
similarity index 71%
copy from extensions-jvm/groovy/integration-test/src/test/java/org/apache/camel/quarkus/component/groovy/it/GroovyTest.java
copy to extensions-jvm/groovy/integration-test/src/main/java/org/apache/camel/quarkus/component/groovy/it/GroovyRoutes.java
index a5237ef..59c03d1 100644
--- a/extensions-jvm/groovy/integration-test/src/test/java/org/apache/camel/quarkus/component/groovy/it/GroovyTest.java
+++ b/extensions-jvm/groovy/integration-test/src/main/java/org/apache/camel/quarkus/component/groovy/it/GroovyRoutes.java
@@ -16,19 +16,16 @@
  */
 package org.apache.camel.quarkus.component.groovy.it;
 
-import io.quarkus.test.junit.QuarkusTest;
-import io.restassured.RestAssured;
-import org.junit.jupiter.api.Test;
+import org.apache.camel.builder.RouteBuilder;
 
-@QuarkusTest
-class GroovyTest {
+public class GroovyRoutes extends RouteBuilder {
 
-    @Test
-    public void loadLanguageGroovy() {
-        /* A simple autogenerated test */
-        RestAssured.get("/groovy/load/language/groovy")
-                .then()
-                .statusCode(200);
-    }
+    @Override
+    public void configure() {
+
+        from("direct:scriptGroovy")
+                .script()
+                .groovy("exchange.getMessage().setBody('Hello ' + exchange.getMessage().getBody(String.class) + ' from Groovy!')");
 
+    }
 }
diff --git a/extensions-jvm/groovy/integration-test/src/test/java/org/apache/camel/quarkus/component/groovy/it/GroovyTest.java b/extensions-jvm/groovy/integration-test/src/test/java/org/apache/camel/quarkus/component/groovy/it/GroovyTest.java
index a5237ef..258c35f 100644
--- a/extensions-jvm/groovy/integration-test/src/test/java/org/apache/camel/quarkus/component/groovy/it/GroovyTest.java
+++ b/extensions-jvm/groovy/integration-test/src/test/java/org/apache/camel/quarkus/component/groovy/it/GroovyTest.java
@@ -18,17 +18,22 @@ package org.apache.camel.quarkus.component.groovy.it;
 
 import io.quarkus.test.junit.QuarkusTest;
 import io.restassured.RestAssured;
+import io.restassured.http.ContentType;
+import org.hamcrest.Matchers;
 import org.junit.jupiter.api.Test;
 
 @QuarkusTest
 class GroovyTest {
 
     @Test
-    public void loadLanguageGroovy() {
-        /* A simple autogenerated test */
-        RestAssured.get("/groovy/load/language/groovy")
+    public void script() {
+        RestAssured.given()
+                .contentType(ContentType.TEXT)
+                .body("world")
+                .post("/groovy/route/scriptGroovy")
                 .then()
-                .statusCode(200);
+                .statusCode(200)
+                .body(Matchers.is("Hello world from Groovy!"));
     }
 
 }

[camel-quarkus] 04/10: Test sample() EIP #2628

Posted by pp...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ppalaga pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit 56bd770c39387dadfeb4de3f6409bb5c6dc7d435
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Tue Jul 27 12:23:58 2021 +0200

    Test sample() EIP #2628
---
 integration-test-groups/foundation/eip/pom.xml     |  5 ++++
 .../apache/camel/quarkus/eip/it/EipResource.java   | 10 +++++--
 .../org/apache/camel/quarkus/eip/it/EipRoutes.java |  4 +++
 .../org/apache/camel/quarkus/eip/it/EipTest.java   | 35 ++++++++++++++++++++++
 integration-tests/foundation-grouped/pom.xml       |  5 ++++
 5 files changed, 57 insertions(+), 2 deletions(-)

diff --git a/integration-test-groups/foundation/eip/pom.xml b/integration-test-groups/foundation/eip/pom.xml
index f6ea876..e8babb8 100644
--- a/integration-test-groups/foundation/eip/pom.xml
+++ b/integration-test-groups/foundation/eip/pom.xml
@@ -67,6 +67,11 @@
             <artifactId>rest-assured</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.assertj</groupId>
+            <artifactId>assertj-core</artifactId>
+            <scope>test</scope>
+        </dependency>
 
         <!-- The following dependencies guarantee that this module is built after them. You can update them by running `mvn process-resources -Pformat -N` from the source tree root directory -->
         <dependency>
diff --git a/integration-test-groups/foundation/eip/src/main/java/org/apache/camel/quarkus/eip/it/EipResource.java b/integration-test-groups/foundation/eip/src/main/java/org/apache/camel/quarkus/eip/it/EipResource.java
index fd0940f..0091b96 100644
--- a/integration-test-groups/foundation/eip/src/main/java/org/apache/camel/quarkus/eip/it/EipResource.java
+++ b/integration-test-groups/foundation/eip/src/main/java/org/apache/camel/quarkus/eip/it/EipResource.java
@@ -61,10 +61,16 @@ public class EipResource {
     @Path("/mock/{name}/{count}/{timeout}/{part}")
     @Produces(MediaType.TEXT_PLAIN)
     @GET
-    public String mockHeader(@PathParam("name") String name, @PathParam("count") int count, @PathParam("timeout") int timeout,
+    public String mockHeader(@PathParam("name") String name, @PathParam("count") String count,
+            @PathParam("timeout") int timeout,
             @PathParam("part") String part) {
         MockEndpoint mock = context.getEndpoint("mock:" + name, MockEndpoint.class);
-        mock.setExpectedMessageCount(count);
+
+        if (count.endsWith("+")) {
+            mock.setMinimumExpectedMessageCount(Integer.valueOf(count.substring(0, count.length() - 1)));
+        } else {
+            mock.setExpectedMessageCount(Integer.valueOf(count));
+        }
         try {
             mock.assertIsSatisfied(timeout);
         } catch (InterruptedException e1) {
diff --git a/integration-test-groups/foundation/eip/src/main/java/org/apache/camel/quarkus/eip/it/EipRoutes.java b/integration-test-groups/foundation/eip/src/main/java/org/apache/camel/quarkus/eip/it/EipRoutes.java
index 0fe86eb..a8e14ae 100644
--- a/integration-test-groups/foundation/eip/src/main/java/org/apache/camel/quarkus/eip/it/EipRoutes.java
+++ b/integration-test-groups/foundation/eip/src/main/java/org/apache/camel/quarkus/eip/it/EipRoutes.java
@@ -92,6 +92,10 @@ public class EipRoutes extends RouteBuilder {
         from("direct:routingSlip")
                 .routingSlip(header("routingSlipHeader"));
 
+        from("direct:sample")
+                .sample()
+                .to("mock:sample");
+
     }
 
     @Produces
diff --git a/integration-test-groups/foundation/eip/src/test/java/org/apache/camel/quarkus/eip/it/EipTest.java b/integration-test-groups/foundation/eip/src/test/java/org/apache/camel/quarkus/eip/it/EipTest.java
index 41fd986..85d720a 100644
--- a/integration-test-groups/foundation/eip/src/test/java/org/apache/camel/quarkus/eip/it/EipTest.java
+++ b/integration-test-groups/foundation/eip/src/test/java/org/apache/camel/quarkus/eip/it/EipTest.java
@@ -22,12 +22,16 @@ import java.util.List;
 import io.quarkus.test.junit.QuarkusTest;
 import io.restassured.RestAssured;
 import io.restassured.http.ContentType;
+import org.assertj.core.api.Assertions;
 import org.hamcrest.Matchers;
+import org.jboss.logging.Logger;
 import org.junit.jupiter.api.Test;
 
 @QuarkusTest
 class EipTest {
 
+    private static final Logger LOG = Logger.getLogger(EipTest.class);
+
     @Test
     public void claimCheckByHeader() {
         RestAssured.given()
@@ -314,4 +318,35 @@ class EipTest {
 
     }
 
+    @Test
+    public void sample() {
+        final int durationSec = 2;
+        LOG.infof("About to sent messages for %d seconds", durationSec);
+        final long deadline = System.currentTimeMillis() + (durationSec * 1000); // two seconds ahead
+        int i = 0;
+        while (System.currentTimeMillis() < deadline) {
+            /* Send messages for 2 seconds */
+            RestAssured.given()
+                    .contentType(ContentType.TEXT)
+                    .body("message-" + i++)
+                    .post("/eip/route/sample")
+                    .then()
+                    .statusCode(200);
+        }
+        LOG.infof("Sent %d messages", i);
+        /*
+         * We should normally get just 2 samples in 2 seconds using the default sample rate of 1 message per second
+         * But timing is hard in programming, let's allow one more
+         */
+        int overratedSampleUpperBound = durationSec + 1;
+        Assertions.assertThat(i).isGreaterThan(overratedSampleUpperBound);
+        String[] samples = RestAssured.get("/eip/mock/sample/1+/5000/body")
+                .then()
+                .statusCode(200)
+                .extract()
+                .body().asString().split(",");
+        LOG.infof("Got %d samples", samples.length);
+        Assertions.assertThat(samples.length).isBetween(1, overratedSampleUpperBound);
+    }
+
 }
diff --git a/integration-tests/foundation-grouped/pom.xml b/integration-tests/foundation-grouped/pom.xml
index 92712a2..5c3a46c 100644
--- a/integration-tests/foundation-grouped/pom.xml
+++ b/integration-tests/foundation-grouped/pom.xml
@@ -143,6 +143,11 @@
             <scope>test</scope>
         </dependency>
         <dependency>
+            <groupId>org.assertj</groupId>
+            <artifactId>assertj-core</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>org.awaitility</groupId>
             <artifactId>awaitility</artifactId>
             <scope>test</scope>

[camel-quarkus] 07/10: Test step() EIP method #2628

Posted by pp...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ppalaga pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit bbd4931d1c176ec8298d4605f750d80653e9c037
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Wed Jul 28 15:15:23 2021 +0200

    Test step() EIP method #2628
---
 .../main/java/org/apache/camel/quarkus/eip/it/EipRoutes.java |  4 ++++
 .../test/java/org/apache/camel/quarkus/eip/it/EipTest.java   | 12 ++++++++++++
 2 files changed, 16 insertions(+)

diff --git a/integration-test-groups/foundation/eip/src/main/java/org/apache/camel/quarkus/eip/it/EipRoutes.java b/integration-test-groups/foundation/eip/src/main/java/org/apache/camel/quarkus/eip/it/EipRoutes.java
index a8e14ae..360716f 100644
--- a/integration-test-groups/foundation/eip/src/main/java/org/apache/camel/quarkus/eip/it/EipRoutes.java
+++ b/integration-test-groups/foundation/eip/src/main/java/org/apache/camel/quarkus/eip/it/EipRoutes.java
@@ -96,6 +96,10 @@ public class EipRoutes extends RouteBuilder {
                 .sample()
                 .to("mock:sample");
 
+        from("direct:step")
+                .step("foo")
+                .setBody(e -> "Hello " + e.getMessage().getBody(String.class) + " from step!");
+
     }
 
     @Produces
diff --git a/integration-test-groups/foundation/eip/src/test/java/org/apache/camel/quarkus/eip/it/EipTest.java b/integration-test-groups/foundation/eip/src/test/java/org/apache/camel/quarkus/eip/it/EipTest.java
index 85d720a..df94356 100644
--- a/integration-test-groups/foundation/eip/src/test/java/org/apache/camel/quarkus/eip/it/EipTest.java
+++ b/integration-test-groups/foundation/eip/src/test/java/org/apache/camel/quarkus/eip/it/EipTest.java
@@ -349,4 +349,16 @@ class EipTest {
         Assertions.assertThat(samples.length).isBetween(1, overratedSampleUpperBound);
     }
 
+    @Test
+    public void step() {
+        RestAssured.given()
+                .contentType(ContentType.TEXT)
+                .body("Monty")
+                .post("/eip/route/step")
+                .then()
+                .statusCode(200)
+                .body(Matchers.is("Hello Monty from step!"));
+
+    }
+
 }

[camel-quarkus] 06/10: Fix and test serviceCall EIP #2628, fix #2952

Posted by pp...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ppalaga pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit cb0dfa392b9127e0a705ed4192105084884d9176
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Tue Jul 27 18:11:06 2021 +0200

    Fix and test serviceCall EIP #2628, fix #2952
---
 .../core/cloud/deployment/CloudProcessor.java      | 50 ++++++++++++++++++++++
 extensions-core/http-common/deployment/pom.xml     |  4 ++
 extensions-core/http-common/runtime/pom.xml        |  4 ++
 extensions-jvm/dns/deployment/pom.xml              |  4 ++
 extensions-jvm/dns/runtime/pom.xml                 |  4 ++
 extensions-jvm/etcd/deployment/pom.xml             |  4 ++
 extensions-jvm/etcd/runtime/pom.xml                |  4 ++
 extensions-jvm/ribbon/deployment/pom.xml           |  4 ++
 extensions-jvm/ribbon/runtime/pom.xml              |  4 ++
 extensions-jvm/zookeeper/deployment/pom.xml        |  4 ++
 extensions-jvm/zookeeper/runtime/pom.xml           |  4 ++
 extensions/kubernetes/deployment/pom.xml           |  4 ++
 extensions/kubernetes/runtime/pom.xml              |  4 ++
 .../camel/quarkus/component/http/it/HttpRoute.java | 11 +++++
 .../camel/quarkus/component/http/it/HttpTest.java  | 14 ++++++
 15 files changed, 123 insertions(+)

diff --git a/extensions-core/core-cloud/deployment/src/main/java/org/apache/camel/quarkus/core/cloud/deployment/CloudProcessor.java b/extensions-core/core-cloud/deployment/src/main/java/org/apache/camel/quarkus/core/cloud/deployment/CloudProcessor.java
new file mode 100644
index 0000000..7c0d620
--- /dev/null
+++ b/extensions-core/core-cloud/deployment/src/main/java/org/apache/camel/quarkus/core/cloud/deployment/CloudProcessor.java
@@ -0,0 +1,50 @@
+/*
+ * 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.quarkus.core.cloud.deployment;
+
+import io.quarkus.deployment.annotations.BuildProducer;
+import io.quarkus.deployment.annotations.BuildStep;
+import io.quarkus.deployment.builditem.CombinedIndexBuildItem;
+import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
+import org.apache.camel.model.cloud.ServiceCallConfiguration;
+import org.apache.camel.quarkus.core.deployment.spi.CamelServiceDestination;
+import org.apache.camel.quarkus.core.deployment.spi.CamelServicePatternBuildItem;
+import org.jboss.jandex.DotName;
+import org.jboss.jandex.IndexView;
+
+class CloudProcessor {
+    @BuildStep
+    void servicePatterns(BuildProducer<CamelServicePatternBuildItem> services) {
+        services.produce(new CamelServicePatternBuildItem(
+                CamelServiceDestination.DISCOVERY,
+                true,
+                "META-INF/services/org/apache/camel/cloud/*"));
+
+    }
+
+    @BuildStep
+    void reflectiveClasses(BuildProducer<ReflectiveClassBuildItem> reflectiveClass,
+            CombinedIndexBuildItem combinedIndexBuildItem) {
+        // TODO: remove when https://github.com/apache/camel-quarkus/issues/2955 is fixed
+        IndexView index = combinedIndexBuildItem.getIndex();
+        index.getAllKnownSubclasses(DotName.createSimple(ServiceCallConfiguration.class.getName()))
+                .stream()
+                .map(classInfo -> new ReflectiveClassBuildItem(true, false, classInfo.name().toString()))
+                .forEach(reflectiveClass::produce);
+    }
+
+}
diff --git a/extensions-core/http-common/deployment/pom.xml b/extensions-core/http-common/deployment/pom.xml
index 4665df0..7d0158b 100644
--- a/extensions-core/http-common/deployment/pom.xml
+++ b/extensions-core/http-common/deployment/pom.xml
@@ -36,6 +36,10 @@
         </dependency>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-core-cloud-deployment</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-http-common</artifactId>
         </dependency>
     </dependencies>
diff --git a/extensions-core/http-common/runtime/pom.xml b/extensions-core/http-common/runtime/pom.xml
index 9e85c36..c968781 100644
--- a/extensions-core/http-common/runtime/pom.xml
+++ b/extensions-core/http-common/runtime/pom.xml
@@ -46,6 +46,10 @@
             <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-core</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-core-cloud</artifactId>
+        </dependency>
 
         <!-- camel -->
         <dependency>
diff --git a/extensions-jvm/dns/deployment/pom.xml b/extensions-jvm/dns/deployment/pom.xml
index 51f4760..a636793 100644
--- a/extensions-jvm/dns/deployment/pom.xml
+++ b/extensions-jvm/dns/deployment/pom.xml
@@ -36,6 +36,10 @@
         </dependency>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-core-cloud-deployment</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-dns</artifactId>
         </dependency>
     </dependencies>
diff --git a/extensions-jvm/dns/runtime/pom.xml b/extensions-jvm/dns/runtime/pom.xml
index 613bdc6..04698c1 100644
--- a/extensions-jvm/dns/runtime/pom.xml
+++ b/extensions-jvm/dns/runtime/pom.xml
@@ -52,6 +52,10 @@
             <artifactId>camel-quarkus-core</artifactId>
         </dependency>
         <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-core-cloud</artifactId>
+        </dependency>
+        <dependency>
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-dns</artifactId>
         </dependency>
diff --git a/extensions-jvm/etcd/deployment/pom.xml b/extensions-jvm/etcd/deployment/pom.xml
index 66de607..d75e406 100644
--- a/extensions-jvm/etcd/deployment/pom.xml
+++ b/extensions-jvm/etcd/deployment/pom.xml
@@ -36,6 +36,10 @@
         </dependency>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-core-cloud-deployment</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-etcd</artifactId>
         </dependency>
     </dependencies>
diff --git a/extensions-jvm/etcd/runtime/pom.xml b/extensions-jvm/etcd/runtime/pom.xml
index 65931ee..4539828 100644
--- a/extensions-jvm/etcd/runtime/pom.xml
+++ b/extensions-jvm/etcd/runtime/pom.xml
@@ -52,6 +52,10 @@
             <artifactId>camel-quarkus-core</artifactId>
         </dependency>
         <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-core-cloud</artifactId>
+        </dependency>
+        <dependency>
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-etcd</artifactId>
         </dependency>
diff --git a/extensions-jvm/ribbon/deployment/pom.xml b/extensions-jvm/ribbon/deployment/pom.xml
index d5647a4..dbe5a5d 100644
--- a/extensions-jvm/ribbon/deployment/pom.xml
+++ b/extensions-jvm/ribbon/deployment/pom.xml
@@ -36,6 +36,10 @@
         </dependency>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-core-cloud-deployment</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-ribbon</artifactId>
         </dependency>
     </dependencies>
diff --git a/extensions-jvm/ribbon/runtime/pom.xml b/extensions-jvm/ribbon/runtime/pom.xml
index 0b27110..774c51e 100644
--- a/extensions-jvm/ribbon/runtime/pom.xml
+++ b/extensions-jvm/ribbon/runtime/pom.xml
@@ -52,6 +52,10 @@
             <artifactId>camel-quarkus-core</artifactId>
         </dependency>
         <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-core-cloud</artifactId>
+        </dependency>
+        <dependency>
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-ribbon</artifactId>
         </dependency>
diff --git a/extensions-jvm/zookeeper/deployment/pom.xml b/extensions-jvm/zookeeper/deployment/pom.xml
index 9adfa9d..f6f603e 100644
--- a/extensions-jvm/zookeeper/deployment/pom.xml
+++ b/extensions-jvm/zookeeper/deployment/pom.xml
@@ -36,6 +36,10 @@
         </dependency>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-core-cloud-deployment</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-zookeeper</artifactId>
         </dependency>
     </dependencies>
diff --git a/extensions-jvm/zookeeper/runtime/pom.xml b/extensions-jvm/zookeeper/runtime/pom.xml
index 8793a87..f0af7c8 100644
--- a/extensions-jvm/zookeeper/runtime/pom.xml
+++ b/extensions-jvm/zookeeper/runtime/pom.xml
@@ -52,6 +52,10 @@
             <artifactId>camel-quarkus-core</artifactId>
         </dependency>
         <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-core-cloud</artifactId>
+        </dependency>
+        <dependency>
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-zookeeper</artifactId>
         </dependency>
diff --git a/extensions/kubernetes/deployment/pom.xml b/extensions/kubernetes/deployment/pom.xml
index 1c0038c..d312abd 100644
--- a/extensions/kubernetes/deployment/pom.xml
+++ b/extensions/kubernetes/deployment/pom.xml
@@ -40,6 +40,10 @@
         </dependency>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-core-cloud-deployment</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-support-commons-logging-deployment</artifactId>
         </dependency>
         <dependency>
diff --git a/extensions/kubernetes/runtime/pom.xml b/extensions/kubernetes/runtime/pom.xml
index f806582..4ea00b1 100644
--- a/extensions/kubernetes/runtime/pom.xml
+++ b/extensions/kubernetes/runtime/pom.xml
@@ -68,6 +68,10 @@
         </dependency>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-core-cloud</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-support-commons-logging</artifactId>
         </dependency>
         <dependency>
diff --git a/integration-tests/http/src/main/java/org/apache/camel/quarkus/component/http/it/HttpRoute.java b/integration-tests/http/src/main/java/org/apache/camel/quarkus/component/http/it/HttpRoute.java
index ed7c891..a6b0d17 100644
--- a/integration-tests/http/src/main/java/org/apache/camel/quarkus/component/http/it/HttpRoute.java
+++ b/integration-tests/http/src/main/java/org/apache/camel/quarkus/component/http/it/HttpRoute.java
@@ -54,6 +54,17 @@ public class HttpRoute extends RouteBuilder {
                         }
                     }
                 });
+
+        from("netty-http:http://0.0.0.0:{{camel.netty-http.test-port}}/test/server/serviceCall")
+                .serviceCall()
+                .name("myService/test/server/myService")
+                .component("netty-http")
+                .staticServiceDiscovery()
+                .servers("myService@localhost:{{camel.netty-http.test-port}}")
+                .end();
+        from("netty-http:http://0.0.0.0:{{camel.netty-http.test-port}}/test/server/myService")
+                .transform().constant("Hello from myService");
+
     }
 
     @Named
diff --git a/integration-tests/http/src/test/java/org/apache/camel/quarkus/component/http/it/HttpTest.java b/integration-tests/http/src/test/java/org/apache/camel/quarkus/component/http/it/HttpTest.java
index 52007c1..f81a1f2 100644
--- a/integration-tests/http/src/test/java/org/apache/camel/quarkus/component/http/it/HttpTest.java
+++ b/integration-tests/http/src/test/java/org/apache/camel/quarkus/component/http/it/HttpTest.java
@@ -21,6 +21,7 @@ import io.quarkus.test.junit.QuarkusTest;
 import io.restassured.RestAssured;
 import io.restassured.http.ContentType;
 import org.eclipse.microprofile.config.ConfigProvider;
+import org.hamcrest.Matchers;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.MethodSource;
@@ -199,6 +200,19 @@ class HttpTest {
                         "fq", is(not(empty())));
     }
 
+    @Test
+    public void serviceCall() {
+        final int port = ConfigProvider.getConfig().getValue("camel.netty-http.test-port", Integer.class);
+        RestAssured
+                .given()
+                .port(port)
+                .when()
+                .get("/test/server/serviceCall")
+                .then()
+                .statusCode(200)
+                .body(Matchers.is("Hello from myService"));
+    }
+
     private static String[] getHttpComponentNames() {
         return HTTP_COMPONENTS;
     }

[camel-quarkus] 10/10: Keep consul-client in sync with Camel

Posted by pp...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ppalaga pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit c8dd89c6d17e00ddd5622b4146fd0b418ae420df
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Wed Jul 28 18:20:52 2021 +0200

    Keep consul-client in sync with Camel
---
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index cc284ce..a9453cd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -126,7 +126,7 @@
 
         <!-- Test dependency versions (keep sorted alphabetically) -->
         <commons-logging.version>1.2</commons-logging.version><!-- Mess in the transitive dependencies of hbase-testing-util -->
-        <consul-client.version>1.3.3</consul-client.version>
+        <consul-client.version>${consul-client-version}</consul-client.version>
         <ftpserver.version>1.1.1</ftpserver.version>
         <istack-commons-runtime.version>3.0.10</istack-commons-runtime.version>
         <jakarta.mail.version>${jakarta-mail-version}</jakarta.mail.version>