diff --git a/apm-sniffer/apm-sdk-plugin/rabbitmq-5.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/rabbitmq/RabbitMQConsumerInterceptor.java b/apm-sniffer/apm-sdk-plugin/rabbitmq-5.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/rabbitmq/RabbitMQConsumerInterceptor.java index 91be8bb7f..64b8cf8ba 100644 --- a/apm-sniffer/apm-sdk-plugin/rabbitmq-5.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/rabbitmq/RabbitMQConsumerInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/rabbitmq-5.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/rabbitmq/RabbitMQConsumerInterceptor.java @@ -53,8 +53,6 @@ public class RabbitMQConsumerInterceptor implements InstanceMethodsAroundInterce next = next.next(); if (properties.getHeaders() != null && properties.getHeaders().get(next.getHeadKey()) != null) { next.setHeadValue(properties.getHeaders().get(next.getHeadKey()).toString()); - } else { - next.setHeadValue(""); } } ContextManager.extract(contextCarrier); diff --git a/apm-sniffer/apm-sdk-plugin/rabbitmq-5.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/rabbitmq/RabbitMQConsumerInterceptorTest.java b/apm-sniffer/apm-sdk-plugin/rabbitmq-5.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/rabbitmq/RabbitMQConsumerInterceptorTest.java index e69a654c7..0d007f148 100644 --- a/apm-sniffer/apm-sdk-plugin/rabbitmq-5.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/rabbitmq/RabbitMQConsumerInterceptorTest.java +++ b/apm-sniffer/apm-sdk-plugin/rabbitmq-5.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/rabbitmq/RabbitMQConsumerInterceptorTest.java @@ -63,20 +63,44 @@ public class RabbitMQConsumerInterceptorTest { private RabbitMQConsumerInterceptor rabbitMQConsumerInterceptor; - private Object[] arguments; - @Before public void setUp() throws Exception { rabbitMQConsumerInterceptor = new RabbitMQConsumerInterceptor(); - Envelope envelope = new Envelope(1111,false,"","rabbitmq-test"); - Map headers = new HashMap(); - headers.put("sw6","1-MS4xLjE1NDM5NzU1OTEwMTQwMDAx-MS4xLjE1NDM5NzU1OTA5OTcwMDAw-0-1-1-IzEyNy4wLjAuMTo1Mjcy-I1JhYmJpdE1RL1RvcGljL1F1ZXVlL3JhYmJpdG1xLXRlc3QvUHJvZHVjZXI=-I1JhYmJpdE1RL1RvcGljL1F1ZXVlL3JhYmJpdG1xLXRlc3QvUHJvZHVjZXI="); - AMQP.BasicProperties.Builder propsBuilder = new AMQP.BasicProperties.Builder(); - arguments = new Object[] {0,0,envelope,propsBuilder.headers(headers).build()}; } @Test public void TestRabbitMQConsumerInterceptor() throws Throwable { + Envelope envelope = new Envelope(1111,false,"","rabbitmq-test"); + Map headers = new HashMap(); + headers.put("sw6","1-MS4xLjE1NDM5NzU1OTEwMTQwMDAx-MS4xLjE1NDM5NzU1OTA5OTcwMDAw-0-1-1-IzEyNy4wLjAuMTo1Mjcy-I1JhYmJpdE1RL1RvcGljL1F1ZXVlL3JhYmJpdG1xLXRlc3QvUHJvZHVjZXI=-I1JhYmJpdE1RL1RvcGljL1F1ZXVlL3JhYmJpdG1xLXRlc3QvUHJvZHVjZXI="); + AMQP.BasicProperties.Builder propsBuilder = new AMQP.BasicProperties.Builder(); + Object[] arguments = new Object[] {0,0,envelope,propsBuilder.headers(headers).build()}; + + rabbitMQConsumerInterceptor.beforeMethod(enhancedInstance,null,arguments,null,null); + rabbitMQConsumerInterceptor.afterMethod(enhancedInstance,null,arguments,null,null); + List traceSegments = segmentStorage.getTraceSegments(); + Assert.assertThat(traceSegments.size(), is(1)); + } + + @Test + public void testRabbitMQConsumerInterceptorWithNilHeaders() throws Throwable { + Envelope envelope = new Envelope(1111,false,"","rabbitmq-test"); + AMQP.BasicProperties.Builder propsBuilder = new AMQP.BasicProperties.Builder(); + Object[] arguments = new Object[] {0,0,envelope,propsBuilder.headers(null).build()}; + + rabbitMQConsumerInterceptor.beforeMethod(enhancedInstance,null,arguments,null,null); + rabbitMQConsumerInterceptor.afterMethod(enhancedInstance,null,arguments,null,null); + List traceSegments = segmentStorage.getTraceSegments(); + Assert.assertThat(traceSegments.size(), is(1)); + } + + @Test + public void testRabbitMQConsumerInterceptorWithEmptyHeaders() throws Throwable { + Envelope envelope = new Envelope(1111,false,"","rabbitmq-test"); + Map headers = new HashMap(); + AMQP.BasicProperties.Builder propsBuilder = new AMQP.BasicProperties.Builder(); + Object[] arguments = new Object[] {0,0,envelope,propsBuilder.headers(headers).build()}; + rabbitMQConsumerInterceptor.beforeMethod(enhancedInstance,null,arguments,null,null); rabbitMQConsumerInterceptor.afterMethod(enhancedInstance,null,arguments,null,null); List traceSegments = segmentStorage.getTraceSegments();