You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ja...@apache.org on 2021/03/23 07:25:47 UTC

[camel-quarkus] 01/02: Spring RabbitMQ integration test fails in native mode with Camel 3.9.0

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

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

commit 4047f60c922291437de902815e840f6ba702c8b4
Author: JiriOndrusek <on...@gmail.com>
AuthorDate: Mon Mar 22 14:13:16 2021 +0100

    Spring RabbitMQ integration test fails in native mode with Camel 3.9.0
---
 .../rabbitmq/deployment/SpringRabbitmqProcessor.java    | 13 +++++++++++--
 .../spring/rabbitmq/it/SpringRabbitmqRouteBuilder.java  | 12 +++++++++---
 .../component/spring/rabbitmq/it/SpringRabbitmqIT.java  |  2 --
 .../spring/rabbitmq/it/SpringRabbitmqTest.java          | 17 ++++++++++++++---
 4 files changed, 34 insertions(+), 10 deletions(-)

diff --git a/extensions/spring-rabbitmq/deployment/src/main/java/org/apache/camel/quarkus/component/spring/rabbitmq/deployment/SpringRabbitmqProcessor.java b/extensions/spring-rabbitmq/deployment/src/main/java/org/apache/camel/quarkus/component/spring/rabbitmq/deployment/SpringRabbitmqProcessor.java
index d5c6a52..9f9fb06 100644
--- a/extensions/spring-rabbitmq/deployment/src/main/java/org/apache/camel/quarkus/component/spring/rabbitmq/deployment/SpringRabbitmqProcessor.java
+++ b/extensions/spring-rabbitmq/deployment/src/main/java/org/apache/camel/quarkus/component/spring/rabbitmq/deployment/SpringRabbitmqProcessor.java
@@ -16,10 +16,14 @@
  */
 package org.apache.camel.quarkus.component.spring.rabbitmq.deployment;
 
+import io.quarkus.deployment.annotations.BuildProducer;
 import io.quarkus.deployment.annotations.BuildStep;
 import io.quarkus.deployment.builditem.FeatureBuildItem;
 import io.quarkus.deployment.builditem.nativeimage.NativeImageProxyDefinitionBuildItem;
 import org.springframework.amqp.rabbit.connection.ChannelProxy;
+import org.springframework.aop.SpringProxy;
+import org.springframework.aop.framework.Advised;
+import org.springframework.core.DecoratingProxy;
 
 class SpringRabbitmqProcessor {
 
@@ -31,7 +35,12 @@ class SpringRabbitmqProcessor {
     }
 
     @BuildStep
-    NativeImageProxyDefinitionBuildItem initProxies() {
-        return new NativeImageProxyDefinitionBuildItem(ChannelProxy.class.getCanonicalName());
+    void initProxies(BuildProducer<NativeImageProxyDefinitionBuildItem> proxies) {
+        proxies.produce(new NativeImageProxyDefinitionBuildItem(ChannelProxy.class.getCanonicalName()));
+        proxies.produce(new NativeImageProxyDefinitionBuildItem(
+                "org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer$ContainerDelegate",
+                SpringProxy.class.getCanonicalName(), Advised.class.getCanonicalName(),
+                DecoratingProxy.class.getCanonicalName()));
     }
+
 }
diff --git a/integration-tests/spring-rabbitmq/src/main/java/org/apache/camel/quarkus/component/spring/rabbitmq/it/SpringRabbitmqRouteBuilder.java b/integration-tests/spring-rabbitmq/src/main/java/org/apache/camel/quarkus/component/spring/rabbitmq/it/SpringRabbitmqRouteBuilder.java
index 442c313..bafee55 100644
--- a/integration-tests/spring-rabbitmq/src/main/java/org/apache/camel/quarkus/component/spring/rabbitmq/it/SpringRabbitmqRouteBuilder.java
+++ b/integration-tests/spring-rabbitmq/src/main/java/org/apache/camel/quarkus/component/spring/rabbitmq/it/SpringRabbitmqRouteBuilder.java
@@ -20,18 +20,24 @@ package org.apache.camel.quarkus.component.spring.rabbitmq.it;
 import javax.enterprise.context.ApplicationScoped;
 
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.springrabbit.SpringRabbitMQConstants;
 
 @ApplicationScoped
 public class SpringRabbitmqRouteBuilder extends RouteBuilder {
 
     @Override
     public void configure() throws Exception {
+        createRoute(SpringRabbitMQConstants.DIRECT_MESSAGE_LISTENER_CONTAINER);
+        createRoute(SpringRabbitMQConstants.SIMPLE_MESSAGE_LISTENER_CONTAINER);
+    }
+
+    private void createRoute(String type) {
         String url = String.format(
-                "spring-rabbitmq:%s?queues=myqueue&routingKey=%s&connectionFactory=#connectionFactory&autoDeclare=true",
-                SpringRabbitmqResource.EXCHANGE_IN_OUT, SpringRabbitmqResource.ROUTING_KEY_IN_OUT);
+                "spring-rabbitmq:%s?queues=%s&routingKey=%s&connectionFactory=#connectionFactory&autoDeclare=true&messageListenerContainerType=DMLC",
+                SpringRabbitmqResource.EXCHANGE_IN_OUT + type, type, SpringRabbitmqResource.ROUTING_KEY_IN_OUT + type);
 
         from(url)
                 .transform(body().prepend("Hello "))
-                .to(SpringRabbitmqResource.DIRECT_IN_OUT);
+                .to(SpringRabbitmqResource.DIRECT_IN_OUT + type);
     }
 }
diff --git a/integration-tests/spring-rabbitmq/src/test/java/org/apache/camel/quarkus/component/spring/rabbitmq/it/SpringRabbitmqIT.java b/integration-tests/spring-rabbitmq/src/test/java/org/apache/camel/quarkus/component/spring/rabbitmq/it/SpringRabbitmqIT.java
index 4a5bdf4..52812e3 100644
--- a/integration-tests/spring-rabbitmq/src/test/java/org/apache/camel/quarkus/component/spring/rabbitmq/it/SpringRabbitmqIT.java
+++ b/integration-tests/spring-rabbitmq/src/test/java/org/apache/camel/quarkus/component/spring/rabbitmq/it/SpringRabbitmqIT.java
@@ -16,11 +16,9 @@
  */
 package org.apache.camel.quarkus.component.spring.rabbitmq.it;
 
-import io.quarkus.test.junit.DisabledOnNativeImage;
 import io.quarkus.test.junit.NativeImageTest;
 
 @NativeImageTest
-@DisabledOnNativeImage("https://github.com/apache/camel-quarkus/issues/2340")
 class SpringRabbitmqIT extends SpringRabbitmqTest {
 
 }
diff --git a/integration-tests/spring-rabbitmq/src/test/java/org/apache/camel/quarkus/component/spring/rabbitmq/it/SpringRabbitmqTest.java b/integration-tests/spring-rabbitmq/src/test/java/org/apache/camel/quarkus/component/spring/rabbitmq/it/SpringRabbitmqTest.java
index 2fdddec..9822030 100644
--- a/integration-tests/spring-rabbitmq/src/test/java/org/apache/camel/quarkus/component/spring/rabbitmq/it/SpringRabbitmqTest.java
+++ b/integration-tests/spring-rabbitmq/src/test/java/org/apache/camel/quarkus/component/spring/rabbitmq/it/SpringRabbitmqTest.java
@@ -20,6 +20,7 @@ import io.quarkus.test.common.QuarkusTestResource;
 import io.quarkus.test.junit.QuarkusTest;
 import io.restassured.RestAssured;
 import io.restassured.response.Response;
+import org.apache.camel.component.springrabbit.SpringRabbitMQConstants;
 import org.junit.jupiter.api.Test;
 import org.springframework.amqp.core.AmqpAdmin;
 import org.springframework.amqp.core.BindingBuilder;
@@ -39,10 +40,20 @@ class SpringRabbitmqTest {
     private ConnectionFactory connectionFactory;
 
     @Test
-    public void testInOut() {
-        sendToExchange(SpringRabbitmqResource.EXCHANGE_IN_OUT, SpringRabbitmqResource.ROUTING_KEY_IN_OUT, "Sheldon");
+    public void testInOutDMLC() {
+        testInOut(SpringRabbitMQConstants.DIRECT_MESSAGE_LISTENER_CONTAINER);
+    }
+
+    @Test
+    public void testInOutSMLC() {
+        testInOut(SpringRabbitMQConstants.SIMPLE_MESSAGE_LISTENER_CONTAINER);
+    }
+
+    public void testInOut(String type) {
+        sendToExchange(SpringRabbitmqResource.EXCHANGE_IN_OUT + type,
+                SpringRabbitmqResource.ROUTING_KEY_IN_OUT + type, "Sheldon");
 
-        getFromDirect(SpringRabbitmqResource.DIRECT_IN_OUT)
+        getFromDirect(SpringRabbitmqResource.DIRECT_IN_OUT + type)
                 .then()
                 .statusCode(200)
                 .body(is("Hello Sheldon"));