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);
+ }
+
}