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/14 14:55:47 UTC

[camel-quarkus] 01/13: Test resequence() and batch() EIP DSL methods #2628

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 9c99a0a1e3d67f71403f51e036fb7b3fbf7c5e70
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Wed May 19 17:05:34 2021 +0200

    Test resequence() and batch() EIP DSL methods #2628
---
 .../component/messaging/it/JmsResource.java        | 15 ++++++++++++++
 .../quarkus/component/messaging/it/JmsRoutes.java  |  8 ++++++++
 .../quarkus/component/messaging/it/JmsTest.java    | 24 ++++++++++++++++++++++
 3 files changed, 47 insertions(+)

diff --git a/integration-tests/messaging/src/main/java/org/apache/camel/quarkus/component/messaging/it/JmsResource.java b/integration-tests/messaging/src/main/java/org/apache/camel/quarkus/component/messaging/it/JmsResource.java
index 22ec50f..55415ed 100644
--- a/integration-tests/messaging/src/main/java/org/apache/camel/quarkus/component/messaging/it/JmsResource.java
+++ b/integration-tests/messaging/src/main/java/org/apache/camel/quarkus/component/messaging/it/JmsResource.java
@@ -23,6 +23,7 @@ import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 import javax.inject.Inject;
 import javax.jms.BytesMessage;
@@ -284,6 +285,20 @@ public class JmsResource {
         topicResultB.assertIsSatisfied(5000);
     }
 
+    @Path("/jms/mock/{name}/{count}/{timeout}")
+    @Produces(MediaType.APPLICATION_JSON)
+    @GET
+    public List<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.toList());
+    }
+
     // *****************************
     //
     // camel-paho
diff --git a/integration-tests/messaging/src/main/java/org/apache/camel/quarkus/component/messaging/it/JmsRoutes.java b/integration-tests/messaging/src/main/java/org/apache/camel/quarkus/component/messaging/it/JmsRoutes.java
index 50cf70d..86c153b 100644
--- a/integration-tests/messaging/src/main/java/org/apache/camel/quarkus/component/messaging/it/JmsRoutes.java
+++ b/integration-tests/messaging/src/main/java/org/apache/camel/quarkus/component/messaging/it/JmsRoutes.java
@@ -70,6 +70,14 @@ public class JmsRoutes extends RouteBuilder {
 
         from("jms:topic:test?clientId=456&durableSubscriptionName=camel-quarkus")
                 .to("mock:topicResultB");
+
+        from("jms:queue:resequence")
+                // sort by body by allowing duplicates (message can have same JMSPriority)
+                // and use reverse ordering so 9 is first output (most important), and 0 is last
+                // use batch mode and fire every 3rd second
+                .resequence(body()).batch().timeout(10000).allowDuplicates().reverse()
+                .to("mock:resequence");
+
     }
 
     private ErrorHandlerBuilder setUpJtaErrorHandler() {
diff --git a/integration-tests/messaging/src/test/java/org/apache/camel/quarkus/component/messaging/it/JmsTest.java b/integration-tests/messaging/src/test/java/org/apache/camel/quarkus/component/messaging/it/JmsTest.java
index 58be3ab..b65502c 100644
--- a/integration-tests/messaging/src/test/java/org/apache/camel/quarkus/component/messaging/it/JmsTest.java
+++ b/integration-tests/messaging/src/test/java/org/apache/camel/quarkus/component/messaging/it/JmsTest.java
@@ -16,7 +16,10 @@
  */
 package org.apache.camel.quarkus.component.messaging.it;
 
+import java.util.Arrays;
+import java.util.Collections;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import io.quarkus.test.common.QuarkusTestResource;
@@ -26,6 +29,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.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.ValueSource;
@@ -179,4 +183,24 @@ class JmsTest {
                 .statusCode(200)
                 .body(is("JMS Transaction Success"));
     }
+
+    @Test
+    public void testResequence() {
+        final List<String> messages = Arrays.asList("a", "b", "c", "c", "d");
+        for (String msg : messages) {
+            RestAssured.given()
+                    .body(msg)
+                    .post("/messaging/jms/resequence")
+                    .then()
+                    .statusCode(201);
+        }
+        Collections.reverse(messages);
+        final List<String> actual = RestAssured.given()
+                .get("/messaging/jms/mock/resequence/5/10000")
+                .then()
+                .statusCode(200)
+                .extract().body().jsonPath().getList(".", String.class);
+        Assertions.assertEquals(messages, actual);
+    }
+
 }