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

robbie pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git


The following commit(s) were added to refs/heads/main by this push:
     new 7892841fec ARTEMIS-4234 Fix some issue with Embedded Resource send and 
receive
7892841fec is described below

commit 7892841fec04b67d83f75ec9501b86d3c80bf4b3
Author: Timothy Bish <[email protected]>
AuthorDate: Mon Apr 10 09:37:45 2023 -0400

    ARTEMIS-4234 Fix some issue with Embedded Resource send and receive
    
    The JUnit resource has a couple bugs in both the send and receive path
    that result in only one message being received if the receive method is
    called repeatedly and some send drop the provided properties. Cleaned up
    some tests to the point of showing the errors and ensuring that at least
    basic functionality is tested.
---
 .../junit/ActiveMQConsumerResourceTest.java        |  56 ++++++++--
 .../junit/ActiveMQDynamicProducerResourceTest.java | 109 ++++++++++++++----
 ...roducerResourceWithoutAddressExceptionTest.java |  11 +-
 ...QDynamicProducerResourceWithoutAddressTest.java | 109 ++++++++++++++----
 .../junit/ActiveMQProducerResourceTest.java        |  59 +++++++---
 .../junit/EmbeddedActiveMQResourceTest.java        |  60 ++++++++--
 .../junit/ActiveMQConsumerResourceTest.java        |  58 +++++++---
 .../junit/ActiveMQDynamicProducerResourceTest.java | 119 ++++++++++++++++----
 ...roducerResourceWithoutAddressExceptionTest.java |  12 +-
 ...QDynamicProducerResourceWithoutAddressTest.java | 123 +++++++++++++++++----
 .../junit/ActiveMQProducerResourceTest.java        |  58 +++++++---
 .../junit/EmbeddedActiveMQResourceTest.java        |  75 ++++++++++---
 .../junit/ActiveMQDynamicProducerDelegate.java     |   5 +-
 .../artemis/junit/ActiveMQProducerDelegate.java    |   5 +-
 .../artemis/junit/EmbeddedActiveMQDelegate.java    |  79 +++++++------
 15 files changed, 711 insertions(+), 227 deletions(-)

diff --git 
a/artemis-junit/artemis-junit-4/src/test/java/org/apache/activemq/artemis/junit/ActiveMQConsumerResourceTest.java
 
b/artemis-junit/artemis-junit-4/src/test/java/org/apache/activemq/artemis/junit/ActiveMQConsumerResourceTest.java
index eb0894b4b8..8d6bb1b0ac 100644
--- 
a/artemis-junit/artemis-junit-4/src/test/java/org/apache/activemq/artemis/junit/ActiveMQConsumerResourceTest.java
+++ 
b/artemis-junit/artemis-junit-4/src/test/java/org/apache/activemq/artemis/junit/ActiveMQConsumerResourceTest.java
@@ -19,6 +19,7 @@ package org.apache.activemq.artemis.junit;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
 import org.apache.activemq.artemis.api.core.SimpleString;
 import org.apache.activemq.artemis.api.core.client.ClientMessage;
 import org.junit.After;
@@ -27,6 +28,9 @@ import org.junit.Test;
 import org.junit.rules.RuleChain;
 
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 
 public class ActiveMQConsumerResourceTest {
 
@@ -52,36 +56,64 @@ public class ActiveMQConsumerResourceTest {
    @Rule
    public RuleChain ruleChain = RuleChain.outerRule(server).around(consumer);
 
-   ClientMessage sent = null;
-
    @After
    public void tearDown() throws Exception {
-      assertNotNull(String.format(ASSERT_SENT_FORMAT, TEST_ADDRESS), sent);
-
-      ClientMessage received = consumer.receiveMessage();
-      assertNotNull(String.format(ASSERT_RECEIVED_FORMAT, TEST_ADDRESS), 
received);
-
       server.stop();
    }
 
    @Test
    public void testSendBytes() throws Exception {
-      sent = server.sendMessage(TEST_ADDRESS, TEST_BODY.getBytes());
+      final ClientMessage sent = server.sendMessage(TEST_ADDRESS, 
TEST_BODY.getBytes());
+      assertNotNull(String.format(ASSERT_SENT_FORMAT, TEST_ADDRESS), sent);
+
+      final ClientMessage received = consumer.receiveMessage();
+      assertNotNull(String.format(ASSERT_RECEIVED_FORMAT, TEST_ADDRESS), 
received);
+      final ActiveMQBuffer body = received.getReadOnlyBodyBuffer();
+      final byte[] receivedBody = new byte[body.readableBytes()];
+      body.readBytes(receivedBody);
+      assertArrayEquals(TEST_BODY.getBytes(), receivedBody);
    }
 
    @Test
    public void testSendString() throws Exception {
-      sent = server.sendMessage(TEST_ADDRESS, TEST_BODY);
+      final ClientMessage sent = server.sendMessage(TEST_ADDRESS, TEST_BODY);
+      assertNotNull(String.format(ASSERT_SENT_FORMAT, TEST_ADDRESS), sent);
+
+      final ClientMessage received = consumer.receiveMessage();
+      assertNotNull(String.format(ASSERT_RECEIVED_FORMAT, TEST_ADDRESS), 
received);
+      assertEquals(TEST_BODY, received.getReadOnlyBodyBuffer().readString());
    }
 
    @Test
    public void testSendBytesAndProperties() throws Exception {
-      sent = server.sendMessageWithProperties(TEST_ADDRESS, 
TEST_BODY.getBytes(), TEST_PROPERTIES);
+      final ClientMessage sent = 
server.sendMessageWithProperties(TEST_ADDRESS, TEST_BODY.getBytes(), 
TEST_PROPERTIES);
+      assertNotNull(String.format(ASSERT_SENT_FORMAT, TEST_ADDRESS), sent);
+
+      final ClientMessage received = consumer.receiveMessage();
+      assertNotNull(String.format(ASSERT_RECEIVED_FORMAT, TEST_ADDRESS), 
received);
+      final ActiveMQBuffer body = received.getReadOnlyBodyBuffer();
+      final byte[] receivedBody = new byte[body.readableBytes()];
+      body.readBytes(receivedBody);
+      assertArrayEquals(TEST_BODY.getBytes(), receivedBody);
+
+      TEST_PROPERTIES.forEach((k, v) -> {
+         assertTrue(received.containsProperty(k));
+         assertEquals(v, received.getStringProperty(k));
+      });
    }
 
    @Test
    public void testSendStringAndProperties() throws Exception {
-      sent = server.sendMessageWithProperties(TEST_ADDRESS, TEST_BODY, 
TEST_PROPERTIES);
-   }
+      final ClientMessage sent = 
server.sendMessageWithProperties(TEST_ADDRESS, TEST_BODY, TEST_PROPERTIES);
+      assertNotNull(String.format(ASSERT_SENT_FORMAT, TEST_ADDRESS), sent);
+
+      final ClientMessage received = consumer.receiveMessage();
+      assertNotNull(String.format(ASSERT_RECEIVED_FORMAT, TEST_ADDRESS), 
received);
+      assertEquals(TEST_BODY, received.getReadOnlyBodyBuffer().readString());
 
+      TEST_PROPERTIES.forEach((k, v) -> {
+         assertTrue(received.containsProperty(k));
+         assertEquals(v, received.getStringProperty(k));
+      });
+   }
 }
diff --git 
a/artemis-junit/artemis-junit-4/src/test/java/org/apache/activemq/artemis/junit/ActiveMQDynamicProducerResourceTest.java
 
b/artemis-junit/artemis-junit-4/src/test/java/org/apache/activemq/artemis/junit/ActiveMQDynamicProducerResourceTest.java
index b58c4fa67a..19dfa3e8ea 100644
--- 
a/artemis-junit/artemis-junit-4/src/test/java/org/apache/activemq/artemis/junit/ActiveMQDynamicProducerResourceTest.java
+++ 
b/artemis-junit/artemis-junit-4/src/test/java/org/apache/activemq/artemis/junit/ActiveMQDynamicProducerResourceTest.java
@@ -19,6 +19,7 @@ package org.apache.activemq.artemis.junit;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
 import org.apache.activemq.artemis.api.core.SimpleString;
 import org.apache.activemq.artemis.api.core.client.ClientMessage;
 import org.junit.After;
@@ -27,6 +28,9 @@ import org.junit.Test;
 import org.junit.rules.RuleChain;
 
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 
 public class ActiveMQDynamicProducerResourceTest {
 
@@ -52,45 +56,108 @@ public class ActiveMQDynamicProducerResourceTest {
    @Rule
    public RuleChain ruleChain = RuleChain.outerRule(server).around(producer);
 
-   ClientMessage sentOne = null;
-   ClientMessage sentTwo = null;
-
    @After
    public void tearDown() throws Exception {
-      assertNotNull(String.format(ASSERT_SENT_FORMAT, TEST_QUEUE_ONE), 
sentOne);
-      assertNotNull(String.format(ASSERT_SENT_FORMAT, TEST_QUEUE_TWO), 
sentTwo);
-
-      ClientMessage receivedOne = server.receiveMessage(TEST_QUEUE_ONE);
-      assertNotNull(String.format(ASSERT_RECEIVED_FORMAT, TEST_QUEUE_ONE), 
receivedOne);
-
-      ClientMessage receivedTwo = server.receiveMessage(TEST_QUEUE_TWO);
-      assertNotNull(String.format(ASSERT_RECEIVED_FORMAT, TEST_QUEUE_TWO), 
receivedTwo);
-
       server.stop();
    }
 
    @Test
    public void testSendBytes() throws Exception {
-      sentOne = producer.sendMessage(TEST_BODY.getBytes());
-      sentTwo = producer.sendMessage(TEST_QUEUE_TWO, TEST_BODY.getBytes());
+      final ClientMessage sentOne = producer.sendMessage(TEST_BODY.getBytes());
+      final ClientMessage sentTwo = producer.sendMessage(TEST_QUEUE_TWO, 
TEST_BODY.getBytes());
+
+      assertNotNull(String.format(ASSERT_SENT_FORMAT, TEST_QUEUE_ONE), 
sentOne);
+      assertNotNull(String.format(ASSERT_SENT_FORMAT, TEST_QUEUE_TWO), 
sentTwo);
+
+      {
+         final ClientMessage received = server.receiveMessage(TEST_QUEUE_ONE);
+         assertNotNull(String.format(ASSERT_RECEIVED_FORMAT, TEST_QUEUE_ONE), 
received);
+         final ActiveMQBuffer body = received.getReadOnlyBodyBuffer();
+         final byte[] receivedBody = new byte[body.readableBytes()];
+         body.readBytes(receivedBody);
+         assertArrayEquals(TEST_BODY.getBytes(), receivedBody);
+      }
+      {
+         final ClientMessage received = server.receiveMessage(TEST_QUEUE_TWO);
+         assertNotNull(String.format(ASSERT_RECEIVED_FORMAT, TEST_QUEUE_TWO), 
received);
+         final ActiveMQBuffer body = received.getReadOnlyBodyBuffer();
+         final byte[] receivedBody = new byte[body.readableBytes()];
+         body.readBytes(receivedBody);
+         assertArrayEquals(TEST_BODY.getBytes(), receivedBody);
+      }
    }
 
    @Test
    public void testSendString() throws Exception {
-      sentOne = producer.sendMessage(TEST_BODY);
-      sentTwo = producer.sendMessage(TEST_QUEUE_TWO, TEST_BODY);
+      final ClientMessage sentOne = producer.sendMessage(TEST_BODY);
+      final ClientMessage sentTwo = producer.sendMessage(TEST_QUEUE_TWO, 
TEST_BODY);
+
+      assertNotNull(String.format(ASSERT_SENT_FORMAT, TEST_QUEUE_ONE), 
sentOne);
+      assertNotNull(String.format(ASSERT_SENT_FORMAT, TEST_QUEUE_TWO), 
sentTwo);
+
+      {
+         final ClientMessage received = server.receiveMessage(TEST_QUEUE_ONE);
+         assertNotNull(String.format(ASSERT_RECEIVED_FORMAT, TEST_QUEUE_ONE), 
received);
+         assertEquals(TEST_BODY, 
received.getReadOnlyBodyBuffer().readString());
+      }
+      {
+         final ClientMessage received = server.receiveMessage(TEST_QUEUE_TWO);
+         assertNotNull(String.format(ASSERT_RECEIVED_FORMAT, TEST_QUEUE_TWO), 
received);
+         assertEquals(TEST_BODY, 
received.getReadOnlyBodyBuffer().readString());
+      }
    }
 
    @Test
    public void testSendBytesAndProperties() throws Exception {
-      sentOne = producer.sendMessage(TEST_BODY.getBytes(), TEST_PROPERTIES);
-      sentTwo = producer.sendMessage(TEST_QUEUE_TWO, TEST_BODY.getBytes(), 
TEST_PROPERTIES);
+      final ClientMessage sentOne = producer.sendMessage(TEST_BODY.getBytes(), 
TEST_PROPERTIES);
+      final ClientMessage sentTwo = producer.sendMessage(TEST_QUEUE_TWO, 
TEST_BODY.getBytes(), TEST_PROPERTIES);
+
+      assertNotNull(String.format(ASSERT_SENT_FORMAT, TEST_QUEUE_ONE), 
sentOne);
+      assertNotNull(String.format(ASSERT_SENT_FORMAT, TEST_QUEUE_TWO), 
sentTwo);
+
+      {
+         final ClientMessage received = server.receiveMessage(TEST_QUEUE_ONE);
+         assertNotNull(String.format(ASSERT_RECEIVED_FORMAT, TEST_QUEUE_ONE), 
received);
+         final ActiveMQBuffer body = received.getReadOnlyBodyBuffer();
+         final byte[] receivedBody = new byte[body.readableBytes()];
+         body.readBytes(receivedBody);
+         assertArrayEquals(TEST_BODY.getBytes(), receivedBody);
+         TEST_PROPERTIES.forEach((k, v) -> {
+            assertTrue(received.containsProperty(k));
+            assertEquals(v, received.getStringProperty(k));
+         });
+      }
+      {
+         final ClientMessage received = server.receiveMessage(TEST_QUEUE_TWO);
+         assertNotNull(String.format(ASSERT_RECEIVED_FORMAT, TEST_QUEUE_TWO), 
received);
+         final ActiveMQBuffer body = received.getReadOnlyBodyBuffer();
+         final byte[] receivedBody = new byte[body.readableBytes()];
+         body.readBytes(receivedBody);
+         assertArrayEquals(TEST_BODY.getBytes(), receivedBody);
+         TEST_PROPERTIES.forEach((k, v) -> {
+            assertTrue(received.containsProperty(k));
+            assertEquals(v, received.getStringProperty(k));
+         });
+      }
    }
 
    @Test
    public void testSendStringAndProperties() throws Exception {
-      sentOne = producer.sendMessage(TEST_BODY, TEST_PROPERTIES);
-      sentTwo = producer.sendMessage(TEST_QUEUE_TWO, TEST_BODY, 
TEST_PROPERTIES);
-   }
+      final ClientMessage sentOne = producer.sendMessage(TEST_BODY, 
TEST_PROPERTIES);
+      final ClientMessage sentTwo = producer.sendMessage(TEST_QUEUE_TWO, 
TEST_BODY, TEST_PROPERTIES);
 
+      assertNotNull(String.format(ASSERT_SENT_FORMAT, TEST_QUEUE_ONE), 
sentOne);
+      assertNotNull(String.format(ASSERT_SENT_FORMAT, TEST_QUEUE_TWO), 
sentTwo);
+
+      {
+         final ClientMessage received = server.receiveMessage(TEST_QUEUE_ONE);
+         assertNotNull(String.format(ASSERT_RECEIVED_FORMAT, TEST_QUEUE_ONE), 
received);
+         assertEquals(TEST_BODY, 
received.getReadOnlyBodyBuffer().readString());
+      }
+      {
+         final ClientMessage received = server.receiveMessage(TEST_QUEUE_TWO);
+         assertNotNull(String.format(ASSERT_RECEIVED_FORMAT, TEST_QUEUE_TWO), 
received);
+         assertEquals(TEST_BODY, 
received.getReadOnlyBodyBuffer().readString());
+      }
+   }
 }
diff --git 
a/artemis-junit/artemis-junit-4/src/test/java/org/apache/activemq/artemis/junit/ActiveMQDynamicProducerResourceWithoutAddressExceptionTest.java
 
b/artemis-junit/artemis-junit-4/src/test/java/org/apache/activemq/artemis/junit/ActiveMQDynamicProducerResourceWithoutAddressExceptionTest.java
index 037bed5483..35d4a385fa 100644
--- 
a/artemis-junit/artemis-junit-4/src/test/java/org/apache/activemq/artemis/junit/ActiveMQDynamicProducerResourceWithoutAddressExceptionTest.java
+++ 
b/artemis-junit/artemis-junit-4/src/test/java/org/apache/activemq/artemis/junit/ActiveMQDynamicProducerResourceWithoutAddressExceptionTest.java
@@ -20,7 +20,6 @@ import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.activemq.artemis.api.core.SimpleString;
-import org.apache.activemq.artemis.api.core.client.ClientMessage;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
@@ -51,8 +50,6 @@ public class 
ActiveMQDynamicProducerResourceWithoutAddressExceptionTest {
    @Rule
    public RuleChain ruleChain = RuleChain.outerRule(server).around(producer);
 
-   ClientMessage sentOne = null;
-
    @Before
    public void setUp() throws Exception {
       producer.setAutoCreateQueue(false);
@@ -61,21 +58,21 @@ public class 
ActiveMQDynamicProducerResourceWithoutAddressExceptionTest {
 
    @Test(expected = IllegalArgumentException.class)
    public void testSendBytesToDefaultAddress() throws Exception {
-      sentOne = producer.sendMessage(TEST_BODY.getBytes());
+      producer.sendMessage(TEST_BODY.getBytes());
    }
 
    @Test(expected = IllegalArgumentException.class)
    public void testSendStringToDefaultAddress() throws Exception {
-      sentOne = producer.sendMessage(TEST_BODY);
+      producer.sendMessage(TEST_BODY);
    }
 
    @Test(expected = IllegalArgumentException.class)
    public void testSendBytesAndPropertiesToDefaultAddress() throws Exception {
-      sentOne = producer.sendMessage(TEST_BODY.getBytes(), TEST_PROPERTIES);
+      producer.sendMessage(TEST_BODY.getBytes(), TEST_PROPERTIES);
    }
 
    @Test(expected = IllegalArgumentException.class)
    public void testSendStringAndPropertiesToDefaultAddress() throws Exception {
-      sentOne = producer.sendMessage(TEST_BODY, TEST_PROPERTIES);
+      producer.sendMessage(TEST_BODY, TEST_PROPERTIES);
    }
 }
diff --git 
a/artemis-junit/artemis-junit-4/src/test/java/org/apache/activemq/artemis/junit/ActiveMQDynamicProducerResourceWithoutAddressTest.java
 
b/artemis-junit/artemis-junit-4/src/test/java/org/apache/activemq/artemis/junit/ActiveMQDynamicProducerResourceWithoutAddressTest.java
index bc2fcef58e..a77efdb911 100644
--- 
a/artemis-junit/artemis-junit-4/src/test/java/org/apache/activemq/artemis/junit/ActiveMQDynamicProducerResourceWithoutAddressTest.java
+++ 
b/artemis-junit/artemis-junit-4/src/test/java/org/apache/activemq/artemis/junit/ActiveMQDynamicProducerResourceWithoutAddressTest.java
@@ -19,6 +19,7 @@ package org.apache.activemq.artemis.junit;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
 import org.apache.activemq.artemis.api.core.SimpleString;
 import org.apache.activemq.artemis.api.core.client.ClientMessage;
 import org.junit.After;
@@ -28,6 +29,9 @@ import org.junit.Test;
 import org.junit.rules.RuleChain;
 
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 
 public class ActiveMQDynamicProducerResourceWithoutAddressTest {
 
@@ -53,9 +57,6 @@ public class 
ActiveMQDynamicProducerResourceWithoutAddressTest {
    @Rule
    public RuleChain ruleChain = RuleChain.outerRule(server).around(producer);
 
-   ClientMessage sentOne = null;
-   ClientMessage sentTwo = null;
-
    @Before
    public void setUp() throws Exception {
       producer.setAutoCreateQueue(false);
@@ -65,40 +66,106 @@ public class 
ActiveMQDynamicProducerResourceWithoutAddressTest {
 
    @After
    public void tearDown() throws Exception {
-      assertNotNull(String.format(ASSERT_SENT_FORMAT, TEST_QUEUE_ONE), 
sentOne);
-      assertNotNull(String.format(ASSERT_SENT_FORMAT, TEST_QUEUE_TWO), 
sentTwo);
-
-      ClientMessage receivedOne = server.receiveMessage(TEST_QUEUE_ONE);
-      assertNotNull(String.format(ASSERT_RECEIVED_FORMAT, TEST_QUEUE_ONE), 
receivedOne);
-
-      ClientMessage receivedTwo = server.receiveMessage(TEST_QUEUE_TWO);
-      assertNotNull(String.format(ASSERT_RECEIVED_FORMAT, TEST_QUEUE_TWO), 
receivedTwo);
-
       server.stop();
    }
 
    @Test
    public void testSendBytes() throws Exception {
-      sentOne = producer.sendMessage(TEST_QUEUE_ONE, TEST_BODY.getBytes());
-      sentTwo = producer.sendMessage(TEST_QUEUE_TWO, TEST_BODY.getBytes());
+      final ClientMessage sentOne = producer.sendMessage(TEST_QUEUE_ONE, 
TEST_BODY.getBytes());
+      final ClientMessage sentTwo = producer.sendMessage(TEST_QUEUE_TWO, 
TEST_BODY.getBytes());
+
+      assertNotNull(String.format(ASSERT_SENT_FORMAT, TEST_QUEUE_ONE), 
sentOne);
+      assertNotNull(String.format(ASSERT_SENT_FORMAT, TEST_QUEUE_TWO), 
sentTwo);
+
+      {
+         final ClientMessage received = server.receiveMessage(TEST_QUEUE_ONE);
+         assertNotNull(String.format(ASSERT_RECEIVED_FORMAT, TEST_QUEUE_ONE), 
received);
+         final ActiveMQBuffer body = received.getReadOnlyBodyBuffer();
+         final byte[] receivedBody = new byte[body.readableBytes()];
+         body.readBytes(receivedBody);
+         assertArrayEquals(TEST_BODY.getBytes(), receivedBody);
+      }
+      {
+         final ClientMessage received = server.receiveMessage(TEST_QUEUE_TWO);
+         assertNotNull(String.format(ASSERT_RECEIVED_FORMAT, TEST_QUEUE_TWO), 
received);
+         final ActiveMQBuffer body = received.getReadOnlyBodyBuffer();
+         final byte[] receivedBody = new byte[body.readableBytes()];
+         body.readBytes(receivedBody);
+         assertArrayEquals(TEST_BODY.getBytes(), receivedBody);
+      }
    }
 
    @Test
    public void testSendString() throws Exception {
-      sentOne = producer.sendMessage(TEST_QUEUE_ONE, TEST_BODY);
-      sentTwo = producer.sendMessage(TEST_QUEUE_TWO, TEST_BODY);
+      final ClientMessage sentOne = producer.sendMessage(TEST_QUEUE_ONE, 
TEST_BODY);
+      final ClientMessage sentTwo = producer.sendMessage(TEST_QUEUE_TWO, 
TEST_BODY);
+
+      assertNotNull(String.format(ASSERT_SENT_FORMAT, TEST_QUEUE_ONE), 
sentOne);
+      assertNotNull(String.format(ASSERT_SENT_FORMAT, TEST_QUEUE_TWO), 
sentTwo);
+
+      {
+         final ClientMessage received = server.receiveMessage(TEST_QUEUE_ONE);
+         assertNotNull(String.format(ASSERT_RECEIVED_FORMAT, TEST_QUEUE_ONE), 
received);
+         assertEquals(TEST_BODY, 
received.getReadOnlyBodyBuffer().readString());
+      }
+      {
+         final ClientMessage received = server.receiveMessage(TEST_QUEUE_TWO);
+         assertNotNull(String.format(ASSERT_RECEIVED_FORMAT, TEST_QUEUE_TWO), 
received);
+         assertEquals(TEST_BODY, 
received.getReadOnlyBodyBuffer().readString());
+      }
    }
 
    @Test
    public void testSendBytesAndProperties() throws Exception {
-      sentOne = producer.sendMessage(TEST_QUEUE_ONE, TEST_BODY.getBytes(), 
TEST_PROPERTIES);
-      sentTwo = producer.sendMessage(TEST_QUEUE_TWO, TEST_BODY.getBytes(), 
TEST_PROPERTIES);
+      final ClientMessage sentOne = producer.sendMessage(TEST_QUEUE_ONE, 
TEST_BODY.getBytes(), TEST_PROPERTIES);
+      final ClientMessage sentTwo = producer.sendMessage(TEST_QUEUE_TWO, 
TEST_BODY.getBytes(), TEST_PROPERTIES);
+
+      assertNotNull(String.format(ASSERT_SENT_FORMAT, TEST_QUEUE_ONE), 
sentOne);
+      assertNotNull(String.format(ASSERT_SENT_FORMAT, TEST_QUEUE_TWO), 
sentTwo);
+
+      {
+         final ClientMessage received = server.receiveMessage(TEST_QUEUE_ONE);
+         assertNotNull(String.format(ASSERT_RECEIVED_FORMAT, TEST_QUEUE_ONE), 
received);
+         final ActiveMQBuffer body = received.getReadOnlyBodyBuffer();
+         final byte[] receivedBody = new byte[body.readableBytes()];
+         body.readBytes(receivedBody);
+         assertArrayEquals(TEST_BODY.getBytes(), receivedBody);
+         TEST_PROPERTIES.forEach((k, v) -> {
+            assertTrue(received.containsProperty(k));
+            assertEquals(v, received.getStringProperty(k));
+         });
+      }
+      {
+         final ClientMessage received = server.receiveMessage(TEST_QUEUE_TWO);
+         assertNotNull(String.format(ASSERT_RECEIVED_FORMAT, TEST_QUEUE_TWO), 
received);
+         final ActiveMQBuffer body = received.getReadOnlyBodyBuffer();
+         final byte[] receivedBody = new byte[body.readableBytes()];
+         body.readBytes(receivedBody);
+         assertArrayEquals(TEST_BODY.getBytes(), receivedBody);
+         TEST_PROPERTIES.forEach((k, v) -> {
+            assertTrue(received.containsProperty(k));
+            assertEquals(v, received.getStringProperty(k));
+         });
+      }
    }
 
    @Test
    public void testSendStringAndProperties() throws Exception {
-      sentOne = producer.sendMessage(TEST_QUEUE_ONE, TEST_BODY, 
TEST_PROPERTIES);
-      sentTwo = producer.sendMessage(TEST_QUEUE_TWO, TEST_BODY, 
TEST_PROPERTIES);
-   }
+      final ClientMessage sentOne = producer.sendMessage(TEST_QUEUE_ONE, 
TEST_BODY, TEST_PROPERTIES);
+      final ClientMessage sentTwo = producer.sendMessage(TEST_QUEUE_TWO, 
TEST_BODY, TEST_PROPERTIES);
 
+      assertNotNull(String.format(ASSERT_SENT_FORMAT, TEST_QUEUE_ONE), 
sentOne);
+      assertNotNull(String.format(ASSERT_SENT_FORMAT, TEST_QUEUE_TWO), 
sentTwo);
+
+      {
+         final ClientMessage received = server.receiveMessage(TEST_QUEUE_ONE);
+         assertNotNull(String.format(ASSERT_RECEIVED_FORMAT, TEST_QUEUE_ONE), 
received);
+         assertEquals(TEST_BODY, 
received.getReadOnlyBodyBuffer().readString());
+      }
+      {
+         final ClientMessage received = server.receiveMessage(TEST_QUEUE_TWO);
+         assertNotNull(String.format(ASSERT_RECEIVED_FORMAT, TEST_QUEUE_TWO), 
received);
+         assertEquals(TEST_BODY, 
received.getReadOnlyBodyBuffer().readString());
+      }
+   }
 }
diff --git 
a/artemis-junit/artemis-junit-4/src/test/java/org/apache/activemq/artemis/junit/ActiveMQProducerResourceTest.java
 
b/artemis-junit/artemis-junit-4/src/test/java/org/apache/activemq/artemis/junit/ActiveMQProducerResourceTest.java
index 8d0394bfd7..8c5ab7d781 100644
--- 
a/artemis-junit/artemis-junit-4/src/test/java/org/apache/activemq/artemis/junit/ActiveMQProducerResourceTest.java
+++ 
b/artemis-junit/artemis-junit-4/src/test/java/org/apache/activemq/artemis/junit/ActiveMQProducerResourceTest.java
@@ -19,14 +19,17 @@ package org.apache.activemq.artemis.junit;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
 import org.apache.activemq.artemis.api.core.SimpleString;
 import org.apache.activemq.artemis.api.core.client.ClientMessage;
-import org.junit.After;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.RuleChain;
 
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 
 public class ActiveMQProducerResourceTest {
 
@@ -52,35 +55,59 @@ public class ActiveMQProducerResourceTest {
    @Rule
    public RuleChain ruleChain = RuleChain.outerRule(server).around(producer);
 
-
-   ClientMessage sent = null;
-
-   @After
-   public void checkResults() throws Exception {
+   @Test
+   public void testSendBytes() throws Exception {
+      final ClientMessage sent = producer.sendMessage(TEST_BODY.getBytes());
       assertNotNull(String.format(ASSERT_SENT_FORMAT, TEST_ADDRESS), sent);
 
-      ClientMessage received = server.receiveMessage(TEST_QUEUE);
+      final ClientMessage received = server.receiveMessage(TEST_QUEUE);
       assertNotNull(String.format(ASSERT_RECEIVED_FORMAT, TEST_QUEUE), 
received);
-   }
-
-   @Test
-   public void testSendBytes() throws Exception {
-      sent = producer.sendMessage(TEST_BODY.getBytes());
+      final ActiveMQBuffer body = received.getReadOnlyBodyBuffer();
+      final byte[] receivedBody = new byte[body.readableBytes()];
+      body.readBytes(receivedBody);
+      assertArrayEquals(TEST_BODY.getBytes(), receivedBody);
    }
 
    @Test
    public void testSendString() throws Exception {
-      sent = producer.sendMessage(TEST_BODY);
+      final ClientMessage sent = producer.sendMessage(TEST_BODY);
+      assertNotNull(String.format(ASSERT_SENT_FORMAT, TEST_ADDRESS), sent);
+
+      final ClientMessage received = server.receiveMessage(TEST_QUEUE);
+      assertNotNull(String.format(ASSERT_RECEIVED_FORMAT, TEST_QUEUE), 
received);
+      assertEquals(TEST_BODY, received.getReadOnlyBodyBuffer().readString());
    }
 
    @Test
    public void testSendBytesAndProperties() throws Exception {
-      sent = producer.sendMessage(TEST_BODY.getBytes(), TEST_PROPERTIES);
+      final ClientMessage sent = producer.sendMessage(TEST_BODY.getBytes(), 
TEST_PROPERTIES);
+      assertNotNull(String.format(ASSERT_SENT_FORMAT, TEST_ADDRESS), sent);
+
+      final ClientMessage received = server.receiveMessage(TEST_QUEUE);
+      assertNotNull(String.format(ASSERT_RECEIVED_FORMAT, TEST_QUEUE), 
received);
+      final ActiveMQBuffer body = received.getReadOnlyBodyBuffer();
+      final byte[] receivedBody = new byte[body.readableBytes()];
+      body.readBytes(receivedBody);
+      assertArrayEquals(TEST_BODY.getBytes(), receivedBody);
+
+      TEST_PROPERTIES.forEach((k, v) -> {
+         assertTrue(received.containsProperty(k));
+         assertEquals(v, received.getStringProperty(k));
+      });
    }
 
    @Test
    public void testSendStringAndProperties() throws Exception {
-      sent = producer.sendMessage(TEST_BODY, TEST_PROPERTIES);
-   }
+      final ClientMessage sent = producer.sendMessage(TEST_BODY, 
TEST_PROPERTIES);
+      assertNotNull(String.format(ASSERT_SENT_FORMAT, TEST_ADDRESS), sent);
+
+      final ClientMessage received = server.receiveMessage(TEST_QUEUE);
+      assertNotNull(String.format(ASSERT_RECEIVED_FORMAT, TEST_QUEUE), 
received);
+      assertEquals(TEST_BODY, received.getReadOnlyBodyBuffer().readString());
 
+      TEST_PROPERTIES.forEach((k, v) -> {
+         assertTrue(received.containsProperty(k));
+         assertEquals(v, received.getStringProperty(k));
+      });
+   }
 }
diff --git 
a/artemis-junit/artemis-junit-4/src/test/java/org/apache/activemq/artemis/junit/EmbeddedActiveMQResourceTest.java
 
b/artemis-junit/artemis-junit-4/src/test/java/org/apache/activemq/artemis/junit/EmbeddedActiveMQResourceTest.java
index a41cfd0925..ec0f27bcfc 100644
--- 
a/artemis-junit/artemis-junit-4/src/test/java/org/apache/activemq/artemis/junit/EmbeddedActiveMQResourceTest.java
+++ 
b/artemis-junit/artemis-junit-4/src/test/java/org/apache/activemq/artemis/junit/EmbeddedActiveMQResourceTest.java
@@ -19,6 +19,7 @@ package org.apache.activemq.artemis.junit;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
 import org.apache.activemq.artemis.api.core.SimpleString;
 import org.apache.activemq.artemis.api.core.client.ClientMessage;
 import org.junit.After;
@@ -28,6 +29,9 @@ import org.junit.Test;
 import org.junit.rules.RuleChain;
 
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 
 public class EmbeddedActiveMQResourceTest {
 
@@ -51,8 +55,6 @@ public class EmbeddedActiveMQResourceTest {
    @Rule
    public RuleChain rulechain = RuleChain.outerRule(server);
 
-   ClientMessage sent = null;
-
    @Before
    public void setUp() throws Exception {
       server.createQueue(TEST_ADDRESS, TEST_QUEUE);
@@ -60,32 +62,66 @@ public class EmbeddedActiveMQResourceTest {
 
    @After
    public void tearDown() throws Exception {
-      assertNotNull(String.format(ASSERT_SENT_FORMAT, TEST_ADDRESS), sent);
-
-      ClientMessage received = server.receiveMessage(TEST_QUEUE);
-      assertNotNull(String.format(ASSERT_RECEIVED_FORMAT, TEST_ADDRESS), 
received);
-
       server.stop();
    }
 
    @Test
    public void testSendBytes() throws Exception {
-      sent = server.sendMessage(TEST_ADDRESS, TEST_BODY.getBytes());
+      final ClientMessage sent = server.sendMessage(TEST_ADDRESS, 
TEST_BODY.getBytes());
+
+      assertNotNull(String.format(ASSERT_SENT_FORMAT, TEST_ADDRESS), sent);
+
+      final ClientMessage received = server.receiveMessage(TEST_QUEUE);
+      assertNotNull(String.format(ASSERT_RECEIVED_FORMAT, TEST_ADDRESS), 
received);
+      final ActiveMQBuffer body = received.getReadOnlyBodyBuffer();
+      final byte[] receivedBody = new byte[body.readableBytes()];
+      body.readBytes(receivedBody);
+      assertArrayEquals(TEST_BODY.getBytes(), receivedBody);
    }
 
    @Test
    public void testSendString() throws Exception {
-      sent = server.sendMessage(TEST_ADDRESS, TEST_BODY);
+      final ClientMessage sent = server.sendMessage(TEST_ADDRESS, TEST_BODY);
+
+      assertNotNull(String.format(ASSERT_SENT_FORMAT, TEST_ADDRESS), sent);
+
+      final ClientMessage received = server.receiveMessage(TEST_QUEUE);
+      assertNotNull(String.format(ASSERT_RECEIVED_FORMAT, TEST_ADDRESS), 
received);
+      assertEquals(TEST_BODY, received.getReadOnlyBodyBuffer().readString());
    }
 
    @Test
    public void testSendBytesAndProperties() throws Exception {
-      sent = server.sendMessageWithProperties(TEST_ADDRESS, 
TEST_BODY.getBytes(), TEST_PROPERTIES);
+      final ClientMessage sent = 
server.sendMessageWithProperties(TEST_ADDRESS, TEST_BODY.getBytes(), 
TEST_PROPERTIES);
+
+      assertNotNull(String.format(ASSERT_SENT_FORMAT, TEST_ADDRESS), sent);
+
+      final ClientMessage received = server.receiveMessage(TEST_QUEUE);
+      assertNotNull(String.format(ASSERT_RECEIVED_FORMAT, TEST_ADDRESS), 
received);
+      final ActiveMQBuffer body = received.getReadOnlyBodyBuffer();
+      final byte[] receivedBody = new byte[body.readableBytes()];
+      body.readBytes(receivedBody);
+      assertArrayEquals(TEST_BODY.getBytes(), receivedBody);
+
+      TEST_PROPERTIES.forEach((k, v) -> {
+         assertTrue(received.containsProperty(k));
+         assertEquals(v, received.getStringProperty(k));
+      });
    }
 
    @Test
    public void testSendStringAndProperties() throws Exception {
-      sent = server.sendMessageWithProperties(TEST_ADDRESS, TEST_BODY, 
TEST_PROPERTIES);
-   }
+      final ClientMessage sent = 
server.sendMessageWithProperties(TEST_ADDRESS, TEST_BODY, TEST_PROPERTIES);
 
+      assertNotNull(String.format(ASSERT_SENT_FORMAT, TEST_ADDRESS), sent);
+
+      final ClientMessage received = server.receiveMessage(TEST_QUEUE);
+      assertNotNull(String.format(ASSERT_RECEIVED_FORMAT, TEST_ADDRESS), 
received);
+      assertEquals(TEST_BODY, received.getReadOnlyBodyBuffer().readString());
+
+      TEST_PROPERTIES.forEach((k, v) -> {
+         assertTrue(received.containsProperty(k));
+         assertEquals(v, received.getStringProperty(k));
+      });
+   }
 }
diff --git 
a/artemis-junit/artemis-junit-5/src/test/java/org/apache/activemq/artemis/junit/ActiveMQConsumerResourceTest.java
 
b/artemis-junit/artemis-junit-5/src/test/java/org/apache/activemq/artemis/junit/ActiveMQConsumerResourceTest.java
index e0edfcd7a4..9360bbd740 100644
--- 
a/artemis-junit/artemis-junit-5/src/test/java/org/apache/activemq/artemis/junit/ActiveMQConsumerResourceTest.java
+++ 
b/artemis-junit/artemis-junit-5/src/test/java/org/apache/activemq/artemis/junit/ActiveMQConsumerResourceTest.java
@@ -19,15 +19,18 @@ package org.apache.activemq.artemis.junit;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
 import org.apache.activemq.artemis.api.core.SimpleString;
 import org.apache.activemq.artemis.api.core.client.ClientMessage;
-import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.Order;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.TestInstance;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.junit.jupiter.api.TestInstance.Lifecycle;
 
 @TestInstance(Lifecycle.PER_CLASS)
@@ -55,34 +58,59 @@ public class ActiveMQConsumerResourceTest {
    @Order(2)
    public ActiveMQConsumerExtension consumer = new 
ActiveMQConsumerExtension(server.getVmURL(), TEST_QUEUE);
 
-   ClientMessage sent = null;
-
-   @AfterAll
-   public void tearDown() {
+   @Test
+   public void testSendBytes() {
+      final ClientMessage sent = server.sendMessage(TEST_ADDRESS, 
TEST_BODY.getBytes());
       assertNotNull(sent, String.format(ASSERT_SENT_FORMAT, TEST_ADDRESS));
 
-      ClientMessage received = consumer.receiveMessage();
+      final ClientMessage received = consumer.receiveMessage();
       assertNotNull(received, String.format(ASSERT_RECEIVED_FORMAT, 
TEST_ADDRESS));
-   }
-
-   @Test
-   public void testSendBytes() {
-      sent = server.sendMessage(TEST_ADDRESS, TEST_BODY.getBytes());
+      final ActiveMQBuffer body = received.getReadOnlyBodyBuffer();
+      final byte[] receivedBody = new byte[body.readableBytes()];
+      body.readBytes(receivedBody);
+      assertArrayEquals(TEST_BODY.getBytes(), receivedBody);
    }
 
    @Test
    public void testSendString() {
-      sent = server.sendMessage(TEST_ADDRESS, TEST_BODY);
+      final ClientMessage sent = server.sendMessage(TEST_ADDRESS, TEST_BODY);
+      assertNotNull(sent, String.format(ASSERT_SENT_FORMAT, TEST_ADDRESS));
+
+      final ClientMessage received = consumer.receiveMessage();
+      assertNotNull(received, String.format(ASSERT_RECEIVED_FORMAT, 
TEST_ADDRESS));
+      assertEquals(TEST_BODY, received.getReadOnlyBodyBuffer().readString());
    }
 
    @Test
    public void testSendBytesAndProperties() {
-      sent = server.sendMessageWithProperties(TEST_ADDRESS, 
TEST_BODY.getBytes(), TEST_PROPERTIES);
+      final ClientMessage sent = 
server.sendMessageWithProperties(TEST_ADDRESS, TEST_BODY.getBytes(), 
TEST_PROPERTIES);
+      assertNotNull(sent, String.format(ASSERT_SENT_FORMAT, TEST_ADDRESS));
+
+      final ClientMessage received = consumer.receiveMessage();
+      assertNotNull(received, String.format(ASSERT_RECEIVED_FORMAT, 
TEST_ADDRESS));
+      final ActiveMQBuffer body = received.getReadOnlyBodyBuffer();
+      final byte[] receivedBody = new byte[body.readableBytes()];
+      body.readBytes(receivedBody);
+      assertArrayEquals(TEST_BODY.getBytes(), receivedBody);
+
+      TEST_PROPERTIES.forEach((k, v) -> {
+         assertTrue(received.containsProperty(k));
+         assertEquals(v, received.getStringProperty(k));
+      });
    }
 
    @Test
    public void testSendStringAndProperties() {
-      sent = server.sendMessageWithProperties(TEST_ADDRESS, TEST_BODY, 
TEST_PROPERTIES);
-   }
+      final ClientMessage sent = 
server.sendMessageWithProperties(TEST_ADDRESS, TEST_BODY, TEST_PROPERTIES);
+      assertNotNull(sent, String.format(ASSERT_SENT_FORMAT, TEST_ADDRESS));
+
+      final ClientMessage received = consumer.receiveMessage();
+      assertNotNull(received, String.format(ASSERT_RECEIVED_FORMAT, 
TEST_ADDRESS));
+      assertEquals(TEST_BODY, received.getReadOnlyBodyBuffer().readString());
 
+      TEST_PROPERTIES.forEach((k, v) -> {
+         assertTrue(received.containsProperty(k));
+         assertEquals(v, received.getStringProperty(k));
+      });
+   }
 }
diff --git 
a/artemis-junit/artemis-junit-5/src/test/java/org/apache/activemq/artemis/junit/ActiveMQDynamicProducerResourceTest.java
 
b/artemis-junit/artemis-junit-5/src/test/java/org/apache/activemq/artemis/junit/ActiveMQDynamicProducerResourceTest.java
index 7acb6bb359..c7ba052b2d 100644
--- 
a/artemis-junit/artemis-junit-5/src/test/java/org/apache/activemq/artemis/junit/ActiveMQDynamicProducerResourceTest.java
+++ 
b/artemis-junit/artemis-junit-5/src/test/java/org/apache/activemq/artemis/junit/ActiveMQDynamicProducerResourceTest.java
@@ -19,15 +19,18 @@ package org.apache.activemq.artemis.junit;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
 import org.apache.activemq.artemis.api.core.SimpleString;
 import org.apache.activemq.artemis.api.core.client.ClientMessage;
-import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.Order;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.TestInstance;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.junit.jupiter.api.TestInstance.Lifecycle;
 
 @TestInstance(Lifecycle.PER_CLASS)
@@ -56,43 +59,113 @@ public class ActiveMQDynamicProducerResourceTest {
    @Order(2)
    public ActiveMQDynamicProducerExtension producer = new 
ActiveMQDynamicProducerExtension(server.getVmURL(), TEST_QUEUE_ONE);
 
-   ClientMessage sentOne = null;
-   ClientMessage sentTwo = null;
+   @Test
+   public void testSendBytes() {
+      final ClientMessage sentOne = producer.sendMessage(TEST_BODY.getBytes());
+      final ClientMessage sentTwo = producer.sendMessage(TEST_QUEUE_TWO, 
TEST_BODY.getBytes());
 
-   @AfterAll
-   public void tearDown() {
       assertNotNull(sentOne, String.format(ASSERT_SENT_FORMAT, 
TEST_QUEUE_ONE));
       assertNotNull(sentTwo, String.format(ASSERT_SENT_FORMAT, 
TEST_QUEUE_TWO));
 
-      ClientMessage receivedOne = server.receiveMessage(TEST_QUEUE_ONE);
-      assertNotNull(receivedOne, String.format(ASSERT_RECEIVED_FORMAT, 
TEST_QUEUE_ONE));
-
-      ClientMessage receivedTwo = server.receiveMessage(TEST_QUEUE_TWO);
-      assertNotNull(receivedTwo, String.format(ASSERT_RECEIVED_FORMAT, 
TEST_QUEUE_TWO));
-   }
-
-   @Test
-   public void testSendBytes() {
-      sentOne = producer.sendMessage(TEST_BODY.getBytes());
-      sentTwo = producer.sendMessage(TEST_QUEUE_TWO, TEST_BODY.getBytes());
+      {
+         final ClientMessage received = server.receiveMessage(TEST_QUEUE_ONE);
+         assertNotNull(received, String.format(ASSERT_RECEIVED_FORMAT, 
TEST_QUEUE_ONE));
+         final ActiveMQBuffer body = received.getReadOnlyBodyBuffer();
+         final byte[] receivedBody = new byte[body.readableBytes()];
+         body.readBytes(receivedBody);
+         assertArrayEquals(TEST_BODY.getBytes(), receivedBody);
+      }
+      {
+         final ClientMessage received = server.receiveMessage(TEST_QUEUE_TWO);
+         assertNotNull(received, String.format(ASSERT_RECEIVED_FORMAT, 
TEST_QUEUE_ONE));
+         final ActiveMQBuffer body = received.getReadOnlyBodyBuffer();
+         final byte[] receivedBody = new byte[body.readableBytes()];
+         body.readBytes(receivedBody);
+         assertArrayEquals(TEST_BODY.getBytes(), receivedBody);
+      }
    }
 
    @Test
    public void testSendString() {
-      sentOne = producer.sendMessage(TEST_BODY);
-      sentTwo = producer.sendMessage(TEST_QUEUE_TWO, TEST_BODY);
+      final ClientMessage sentOne = producer.sendMessage(TEST_BODY);
+      final ClientMessage sentTwo = producer.sendMessage(TEST_QUEUE_TWO, 
TEST_BODY);
+
+      assertNotNull(sentOne, String.format(ASSERT_SENT_FORMAT, 
TEST_QUEUE_ONE));
+      assertNotNull(sentTwo, String.format(ASSERT_SENT_FORMAT, 
TEST_QUEUE_TWO));
+
+      {
+         final ClientMessage received = server.receiveMessage(TEST_QUEUE_ONE);
+         assertNotNull(received, String.format(ASSERT_RECEIVED_FORMAT, 
TEST_QUEUE_ONE));
+         assertEquals(TEST_BODY, 
received.getReadOnlyBodyBuffer().readString());
+      }
+      {
+         final ClientMessage received = server.receiveMessage(TEST_QUEUE_TWO);
+         assertNotNull(received, String.format(ASSERT_RECEIVED_FORMAT, 
TEST_QUEUE_TWO));
+         assertEquals(TEST_BODY, 
received.getReadOnlyBodyBuffer().readString());
+      }
    }
 
    @Test
    public void testSendBytesAndProperties() {
-      sentOne = producer.sendMessage(TEST_BODY.getBytes(), TEST_PROPERTIES);
-      sentTwo = producer.sendMessage(TEST_QUEUE_TWO, TEST_BODY.getBytes(), 
TEST_PROPERTIES);
+      final ClientMessage sentOne = producer.sendMessage(TEST_BODY.getBytes(), 
TEST_PROPERTIES);
+      final ClientMessage sentTwo = producer.sendMessage(TEST_QUEUE_TWO, 
TEST_BODY.getBytes(), TEST_PROPERTIES);
+
+      assertNotNull(sentOne, String.format(ASSERT_SENT_FORMAT, 
TEST_QUEUE_ONE));
+      assertNotNull(sentTwo, String.format(ASSERT_SENT_FORMAT, 
TEST_QUEUE_TWO));
+
+      {
+         final ClientMessage received = server.receiveMessage(TEST_QUEUE_ONE);
+         assertNotNull(received, String.format(ASSERT_RECEIVED_FORMAT, 
TEST_QUEUE_ONE));
+         final ActiveMQBuffer body = received.getReadOnlyBodyBuffer();
+         final byte[] receivedBody = new byte[body.readableBytes()];
+         body.readBytes(receivedBody);
+         assertArrayEquals(TEST_BODY.getBytes(), receivedBody);
+         TEST_PROPERTIES.forEach((k, v) -> {
+            assertTrue(received.containsProperty(k));
+            assertEquals(v, received.getStringProperty(k));
+         });
+      }
+      {
+         final ClientMessage received = server.receiveMessage(TEST_QUEUE_TWO);
+         assertNotNull(received, String.format(ASSERT_RECEIVED_FORMAT, 
TEST_QUEUE_ONE));
+         final ActiveMQBuffer body = received.getReadOnlyBodyBuffer();
+         final byte[] receivedBody = new byte[body.readableBytes()];
+         body.readBytes(receivedBody);
+         assertArrayEquals(TEST_BODY.getBytes(), receivedBody);
+         TEST_PROPERTIES.forEach((k, v) -> {
+            assertTrue(received.containsProperty(k));
+            assertEquals(v, received.getStringProperty(k));
+         });
+      }
    }
 
    @Test
    public void testSendStringAndProperties() {
-      sentOne = producer.sendMessage(TEST_BODY, TEST_PROPERTIES);
-      sentTwo = producer.sendMessage(TEST_QUEUE_TWO, TEST_BODY, 
TEST_PROPERTIES);
-   }
+      final ClientMessage sentOne = producer.sendMessage(TEST_BODY, 
TEST_PROPERTIES);
+      final ClientMessage sentTwo = producer.sendMessage(TEST_QUEUE_TWO, 
TEST_BODY, TEST_PROPERTIES);
 
+      assertNotNull(sentOne, String.format(ASSERT_SENT_FORMAT, 
TEST_QUEUE_ONE));
+      assertNotNull(sentTwo, String.format(ASSERT_SENT_FORMAT, 
TEST_QUEUE_TWO));
+
+      {
+         final ClientMessage received = server.receiveMessage(TEST_QUEUE_ONE);
+         assertNotNull(received, String.format(ASSERT_RECEIVED_FORMAT, 
TEST_QUEUE_ONE));
+         assertEquals(TEST_BODY, 
received.getReadOnlyBodyBuffer().readString());
+
+         TEST_PROPERTIES.forEach((k, v) -> {
+            assertTrue(received.containsProperty(k));
+            assertEquals(v, received.getStringProperty(k));
+         });
+      }
+      {
+         final ClientMessage received = server.receiveMessage(TEST_QUEUE_TWO);
+         assertNotNull(received, String.format(ASSERT_RECEIVED_FORMAT, 
TEST_QUEUE_TWO));
+         assertEquals(TEST_BODY, 
received.getReadOnlyBodyBuffer().readString());
+
+         TEST_PROPERTIES.forEach((k, v) -> {
+            assertTrue(received.containsProperty(k));
+            assertEquals(v, received.getStringProperty(k));
+         });
+      }
+   }
 }
diff --git 
a/artemis-junit/artemis-junit-5/src/test/java/org/apache/activemq/artemis/junit/ActiveMQDynamicProducerResourceWithoutAddressExceptionTest.java
 
b/artemis-junit/artemis-junit-5/src/test/java/org/apache/activemq/artemis/junit/ActiveMQDynamicProducerResourceWithoutAddressExceptionTest.java
index f2ec2929ca..89373f53d6 100644
--- 
a/artemis-junit/artemis-junit-5/src/test/java/org/apache/activemq/artemis/junit/ActiveMQDynamicProducerResourceWithoutAddressExceptionTest.java
+++ 
b/artemis-junit/artemis-junit-5/src/test/java/org/apache/activemq/artemis/junit/ActiveMQDynamicProducerResourceWithoutAddressExceptionTest.java
@@ -20,7 +20,6 @@ import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.activemq.artemis.api.core.SimpleString;
-import org.apache.activemq.artemis.api.core.client.ClientMessage;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Order;
 import org.junit.jupiter.api.Test;
@@ -51,8 +50,6 @@ public class 
ActiveMQDynamicProducerResourceWithoutAddressExceptionTest {
    @Order(2)
    public ActiveMQDynamicProducerExtension producer = new 
ActiveMQDynamicProducerExtension(server.getVmURL());
 
-   ClientMessage sentOne = null;
-
    @BeforeAll
    public void setUp() throws Exception {
       producer.setAutoCreateQueue(false);
@@ -62,29 +59,28 @@ public class 
ActiveMQDynamicProducerResourceWithoutAddressExceptionTest {
    @Test
    public void testSendBytesToDefaultAddress() {
       assertThrows(IllegalArgumentException.class, () -> {
-         sentOne = producer.sendMessage(TEST_BODY.getBytes());
+         producer.sendMessage(TEST_BODY.getBytes());
       });
    }
 
    @Test
    public void testSendStringToDefaultAddress() {
       assertThrows(IllegalArgumentException.class, () -> {
-         sentOne = producer.sendMessage(TEST_BODY);
+         producer.sendMessage(TEST_BODY);
       });
    }
 
    @Test
    public void testSendBytesAndPropertiesToDefaultAddress() {
       assertThrows(IllegalArgumentException.class, () -> {
-         sentOne = producer.sendMessage(TEST_BODY.getBytes(), TEST_PROPERTIES);
+         producer.sendMessage(TEST_BODY.getBytes(), TEST_PROPERTIES);
       });
-
    }
 
    @Test
    public void testSendStringAndPropertiesToDefaultAddress() {
       assertThrows(IllegalArgumentException.class, () -> {
-         sentOne = producer.sendMessage(TEST_BODY, TEST_PROPERTIES);
+         producer.sendMessage(TEST_BODY, TEST_PROPERTIES);
       });
    }
 }
diff --git 
a/artemis-junit/artemis-junit-5/src/test/java/org/apache/activemq/artemis/junit/ActiveMQDynamicProducerResourceWithoutAddressTest.java
 
b/artemis-junit/artemis-junit-5/src/test/java/org/apache/activemq/artemis/junit/ActiveMQDynamicProducerResourceWithoutAddressTest.java
index 93141d6c98..79d6d451e6 100644
--- 
a/artemis-junit/artemis-junit-5/src/test/java/org/apache/activemq/artemis/junit/ActiveMQDynamicProducerResourceWithoutAddressTest.java
+++ 
b/artemis-junit/artemis-junit-5/src/test/java/org/apache/activemq/artemis/junit/ActiveMQDynamicProducerResourceWithoutAddressTest.java
@@ -19,16 +19,19 @@ package org.apache.activemq.artemis.junit;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
 import org.apache.activemq.artemis.api.core.SimpleString;
 import org.apache.activemq.artemis.api.core.client.ClientMessage;
-import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Order;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.TestInstance;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.junit.jupiter.api.TestInstance.Lifecycle;
 
 @TestInstance(Lifecycle.PER_CLASS)
@@ -57,9 +60,6 @@ public class 
ActiveMQDynamicProducerResourceWithoutAddressTest {
    @Order(2)
    public ActiveMQDynamicProducerExtension producer = new 
ActiveMQDynamicProducerExtension(server.getVmURL());
 
-   ClientMessage sentOne = null;
-   ClientMessage sentTwo = null;
-
    @BeforeAll
    public void setUp() {
       producer.setAutoCreateQueue(false);
@@ -67,40 +67,115 @@ public class 
ActiveMQDynamicProducerResourceWithoutAddressTest {
       server.createQueue(TEST_QUEUE_TWO, TEST_QUEUE_TWO);
    }
 
-   @AfterAll
-   public void tearDown() {
+   @Test
+   public void testSendBytes() {
+      final ClientMessage sentOne = producer.sendMessage(TEST_QUEUE_ONE, 
TEST_BODY.getBytes());
+      final ClientMessage sentTwo = producer.sendMessage(TEST_QUEUE_TWO, 
TEST_BODY.getBytes());
+
       assertNotNull(sentOne, String.format(ASSERT_SENT_FORMAT, 
TEST_QUEUE_ONE));
       assertNotNull(sentTwo, String.format(ASSERT_SENT_FORMAT, 
TEST_QUEUE_TWO));
 
-      ClientMessage receivedOne = server.receiveMessage(TEST_QUEUE_ONE);
-      assertNotNull(receivedOne, String.format(ASSERT_RECEIVED_FORMAT, 
TEST_QUEUE_ONE));
-
-      ClientMessage receivedTwo = server.receiveMessage(TEST_QUEUE_TWO);
-      assertNotNull(receivedTwo, String.format(ASSERT_RECEIVED_FORMAT, 
TEST_QUEUE_TWO));
-   }
-
-   @Test
-   public void testSendBytes() {
-      sentOne = producer.sendMessage(TEST_QUEUE_ONE, TEST_BODY.getBytes());
-      sentTwo = producer.sendMessage(TEST_QUEUE_TWO, TEST_BODY.getBytes());
+      {
+         final ClientMessage received = server.receiveMessage(TEST_QUEUE_ONE);
+         assertNotNull(received, String.format(ASSERT_RECEIVED_FORMAT, 
TEST_QUEUE_ONE));
+         final ActiveMQBuffer receuvedBuffer = 
received.getReadOnlyBodyBuffer();
+         final byte[] receivedBody = new byte[receuvedBuffer.readableBytes()];
+         receuvedBuffer.readBytes(receivedBody);
+         assertArrayEquals(TEST_BODY.getBytes(), receivedBody);
+      }
+      {
+         final ClientMessage received = server.receiveMessage(TEST_QUEUE_TWO);
+         assertNotNull(received, String.format(ASSERT_RECEIVED_FORMAT, 
TEST_QUEUE_TWO));
+         final ActiveMQBuffer receivedBuffer = 
received.getReadOnlyBodyBuffer();
+         final byte[] receivedBody = new byte[receivedBuffer.readableBytes()];
+         receivedBuffer.readBytes(receivedBody);
+         assertArrayEquals(TEST_BODY.getBytes(), receivedBody);
+      }
    }
 
    @Test
    public void testSendString() {
-      sentOne = producer.sendMessage(TEST_QUEUE_ONE, TEST_BODY);
-      sentTwo = producer.sendMessage(TEST_QUEUE_TWO, TEST_BODY);
+      final ClientMessage sentOne = producer.sendMessage(TEST_QUEUE_ONE, 
TEST_BODY);
+      final ClientMessage sentTwo = producer.sendMessage(TEST_QUEUE_TWO, 
TEST_BODY);
+
+      assertNotNull(sentOne, String.format(ASSERT_SENT_FORMAT, 
TEST_QUEUE_ONE));
+      assertNotNull(sentTwo, String.format(ASSERT_SENT_FORMAT, 
TEST_QUEUE_TWO));
+
+      {
+         final ClientMessage received = server.receiveMessage(TEST_QUEUE_ONE);
+         assertNotNull(received, String.format(ASSERT_RECEIVED_FORMAT, 
TEST_QUEUE_ONE));
+         assertEquals(TEST_BODY, 
received.getReadOnlyBodyBuffer().readString());
+      }
+      {
+         final ClientMessage received = server.receiveMessage(TEST_QUEUE_TWO);
+         assertNotNull(received, String.format(ASSERT_RECEIVED_FORMAT, 
TEST_QUEUE_TWO));
+         assertEquals(TEST_BODY, 
received.getReadOnlyBodyBuffer().readString());
+      }
    }
 
    @Test
    public void testSendBytesAndProperties() {
-      sentOne = producer.sendMessage(TEST_QUEUE_ONE, TEST_BODY.getBytes(), 
TEST_PROPERTIES);
-      sentTwo = producer.sendMessage(TEST_QUEUE_TWO, TEST_BODY.getBytes(), 
TEST_PROPERTIES);
+      final ClientMessage sentOne = producer.sendMessage(TEST_QUEUE_ONE, 
TEST_BODY.getBytes(), TEST_PROPERTIES);
+      final ClientMessage sentTwo = producer.sendMessage(TEST_QUEUE_TWO, 
TEST_BODY.getBytes(), TEST_PROPERTIES);
+
+      assertNotNull(sentOne, String.format(ASSERT_SENT_FORMAT, 
TEST_QUEUE_ONE));
+      assertNotNull(sentTwo, String.format(ASSERT_SENT_FORMAT, 
TEST_QUEUE_TWO));
+
+      {
+         final ClientMessage received = server.receiveMessage(TEST_QUEUE_ONE);
+         assertNotNull(received, String.format(ASSERT_RECEIVED_FORMAT, 
TEST_QUEUE_ONE));
+         final ActiveMQBuffer receivedBuffer = 
received.getReadOnlyBodyBuffer();
+         final byte[] receivedBody = new byte[receivedBuffer.readableBytes()];
+         receivedBuffer.readBytes(receivedBody);
+         assertArrayEquals(TEST_BODY.getBytes(), receivedBody);
+
+         TEST_PROPERTIES.forEach((k, v) -> {
+            assertTrue(received.containsProperty(k));
+            assertEquals(v, received.getStringProperty(k));
+         });
+      }
+      {
+         final ClientMessage received = server.receiveMessage(TEST_QUEUE_TWO);
+         assertNotNull(received, String.format(ASSERT_RECEIVED_FORMAT, 
TEST_QUEUE_TWO));
+         final ActiveMQBuffer receivedBuffer = 
received.getReadOnlyBodyBuffer();
+         final byte[] receivedBody = new byte[receivedBuffer.readableBytes()];
+         receivedBuffer.readBytes(receivedBody);
+         assertArrayEquals(TEST_BODY.getBytes(), receivedBody);
+
+         TEST_PROPERTIES.forEach((k, v) -> {
+            assertTrue(received.containsProperty(k));
+            assertEquals(v, received.getStringProperty(k));
+         });
+      }
    }
 
    @Test
    public void testSendStringAndProperties() {
-      sentOne = producer.sendMessage(TEST_QUEUE_ONE, TEST_BODY, 
TEST_PROPERTIES);
-      sentTwo = producer.sendMessage(TEST_QUEUE_TWO, TEST_BODY, 
TEST_PROPERTIES);
-   }
+      final ClientMessage sentOne = producer.sendMessage(TEST_QUEUE_ONE, 
TEST_BODY, TEST_PROPERTIES);
+      final ClientMessage sentTwo = producer.sendMessage(TEST_QUEUE_TWO, 
TEST_BODY, TEST_PROPERTIES);
 
+      assertNotNull(sentOne, String.format(ASSERT_SENT_FORMAT, 
TEST_QUEUE_ONE));
+      assertNotNull(sentTwo, String.format(ASSERT_SENT_FORMAT, 
TEST_QUEUE_TWO));
+
+      {
+         final ClientMessage received = server.receiveMessage(TEST_QUEUE_ONE);
+         assertNotNull(received, String.format(ASSERT_RECEIVED_FORMAT, 
TEST_QUEUE_ONE));
+         assertEquals(TEST_BODY, 
received.getReadOnlyBodyBuffer().readString());
+
+         TEST_PROPERTIES.forEach((k, v) -> {
+            assertTrue(received.containsProperty(k));
+            assertEquals(v, received.getStringProperty(k));
+         });
+      }
+      {
+         final ClientMessage received = server.receiveMessage(TEST_QUEUE_TWO);
+         assertNotNull(received, String.format(ASSERT_RECEIVED_FORMAT, 
TEST_QUEUE_TWO));
+         assertEquals(TEST_BODY, 
received.getReadOnlyBodyBuffer().readString());
+
+         TEST_PROPERTIES.forEach((k, v) -> {
+            assertTrue(received.containsProperty(k));
+            assertEquals(v, received.getStringProperty(k));
+         });
+      }
+   }
 }
diff --git 
a/artemis-junit/artemis-junit-5/src/test/java/org/apache/activemq/artemis/junit/ActiveMQProducerResourceTest.java
 
b/artemis-junit/artemis-junit-5/src/test/java/org/apache/activemq/artemis/junit/ActiveMQProducerResourceTest.java
index eb51d0e40c..eac5fb17df 100644
--- 
a/artemis-junit/artemis-junit-5/src/test/java/org/apache/activemq/artemis/junit/ActiveMQProducerResourceTest.java
+++ 
b/artemis-junit/artemis-junit-5/src/test/java/org/apache/activemq/artemis/junit/ActiveMQProducerResourceTest.java
@@ -19,15 +19,18 @@ package org.apache.activemq.artemis.junit;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
 import org.apache.activemq.artemis.api.core.SimpleString;
 import org.apache.activemq.artemis.api.core.client.ClientMessage;
-import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.Order;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.TestInstance;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.junit.jupiter.api.TestInstance.Lifecycle;
 
 @TestInstance(Lifecycle.PER_CLASS)
@@ -55,34 +58,59 @@ public class ActiveMQProducerResourceTest {
    @Order(2)
    public ActiveMQDynamicProducerExtension producer = new 
ActiveMQDynamicProducerExtension(server.getVmURL(), TEST_ADDRESS);
 
-   ClientMessage sent = null;
-
-   @AfterAll
-   public void checkResults() {
+   @Test
+   public void testSendBytes() {
+      final ClientMessage sent = producer.sendMessage(TEST_BODY.getBytes());
       assertNotNull(sent, String.format(ASSERT_SENT_FORMAT, TEST_ADDRESS));
 
-      ClientMessage received = server.receiveMessage(TEST_QUEUE);
+      final ClientMessage received = server.receiveMessage(TEST_QUEUE);
       assertNotNull(received, String.format(ASSERT_RECEIVED_FORMAT, 
TEST_QUEUE));
-   }
-
-   @Test
-   public void testSendBytes() {
-      sent = producer.sendMessage(TEST_BODY.getBytes());
+      final ActiveMQBuffer body = received.getReadOnlyBodyBuffer();
+      final byte[] receivedBody = new byte[body.readableBytes()];
+      body.readBytes(receivedBody);
+      assertArrayEquals(TEST_BODY.getBytes(), receivedBody);
    }
 
    @Test
    public void testSendString() {
-      sent = producer.sendMessage(TEST_BODY);
+      final ClientMessage sent = producer.sendMessage(TEST_BODY);
+      assertNotNull(sent, String.format(ASSERT_SENT_FORMAT, TEST_ADDRESS));
+
+      final ClientMessage received = server.receiveMessage(TEST_QUEUE);
+      assertNotNull(received, String.format(ASSERT_RECEIVED_FORMAT, 
TEST_QUEUE));
+      assertEquals(TEST_BODY, received.getReadOnlyBodyBuffer().readString());
    }
 
    @Test
    public void testSendBytesAndProperties() {
-      sent = producer.sendMessage(TEST_BODY.getBytes(), TEST_PROPERTIES);
+      final ClientMessage sent = producer.sendMessage(TEST_BODY.getBytes(), 
TEST_PROPERTIES);
+      assertNotNull(sent, String.format(ASSERT_SENT_FORMAT, TEST_ADDRESS));
+
+      final ClientMessage received = server.receiveMessage(TEST_QUEUE);
+      assertNotNull(received, String.format(ASSERT_RECEIVED_FORMAT, 
TEST_QUEUE));
+      final ActiveMQBuffer body = received.getReadOnlyBodyBuffer();
+      final byte[] receivedBody = new byte[body.readableBytes()];
+      body.readBytes(receivedBody);
+      assertArrayEquals(TEST_BODY.getBytes(), receivedBody);
+
+      TEST_PROPERTIES.forEach((k, v) -> {
+         assertTrue(received.containsProperty(k));
+         assertEquals(v, received.getStringProperty(k));
+      });
    }
 
    @Test
    public void testSendStringAndProperties() {
-      sent = producer.sendMessage(TEST_BODY, TEST_PROPERTIES);
-   }
+      final ClientMessage sent = producer.sendMessage(TEST_BODY, 
TEST_PROPERTIES);
+      assertNotNull(sent, String.format(ASSERT_SENT_FORMAT, TEST_ADDRESS));
+
+      final ClientMessage received = server.receiveMessage(TEST_QUEUE);
+      assertNotNull(received, String.format(ASSERT_RECEIVED_FORMAT, 
TEST_QUEUE));
+      assertEquals(TEST_BODY, received.getReadOnlyBodyBuffer().readString());
 
+      TEST_PROPERTIES.forEach((k, v) -> {
+         assertTrue(received.containsProperty(k));
+         assertEquals(v, received.getStringProperty(k));
+      });
+   }
 }
diff --git 
a/artemis-junit/artemis-junit-5/src/test/java/org/apache/activemq/artemis/junit/EmbeddedActiveMQResourceTest.java
 
b/artemis-junit/artemis-junit-5/src/test/java/org/apache/activemq/artemis/junit/EmbeddedActiveMQResourceTest.java
index 7a1f342e54..3aa81e15e3 100644
--- 
a/artemis-junit/artemis-junit-5/src/test/java/org/apache/activemq/artemis/junit/EmbeddedActiveMQResourceTest.java
+++ 
b/artemis-junit/artemis-junit-5/src/test/java/org/apache/activemq/artemis/junit/EmbeddedActiveMQResourceTest.java
@@ -19,15 +19,18 @@ package org.apache.activemq.artemis.junit;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
 import org.apache.activemq.artemis.api.core.SimpleString;
 import org.apache.activemq.artemis.api.core.client.ClientMessage;
-import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.TestInstance;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.junit.jupiter.api.TestInstance.Lifecycle;
 
 @TestInstance(Lifecycle.PER_CLASS)
@@ -51,39 +54,85 @@ public class EmbeddedActiveMQResourceTest {
    @RegisterExtension
    public EmbeddedActiveMQExtension server = new EmbeddedActiveMQExtension();
 
-   ClientMessage sent = null;
-
    @BeforeAll
    public void setUp() {
       server.createQueue(TEST_ADDRESS, TEST_QUEUE);
    }
 
-   @AfterAll
-   public void tearDown() {
+   @Test
+   public void testSendBytes() {
+      final ClientMessage sent = server.sendMessage(TEST_ADDRESS, 
TEST_BODY.getBytes());
       assertNotNull(sent, String.format(ASSERT_SENT_FORMAT, TEST_ADDRESS));
 
-      ClientMessage received = server.receiveMessage(TEST_QUEUE);
+      final ClientMessage received = server.receiveMessage(TEST_QUEUE);
       assertNotNull(received, String.format(ASSERT_RECEIVED_FORMAT, 
TEST_ADDRESS));
+      final ActiveMQBuffer body = received.getReadOnlyBodyBuffer();
+      final byte[] receivedBody = new byte[body.readableBytes()];
+      body.readBytes(receivedBody);
+      assertArrayEquals(TEST_BODY.getBytes(), receivedBody);
    }
 
    @Test
-   public void testSendBytes() {
-      sent = server.sendMessage(TEST_ADDRESS, TEST_BODY.getBytes());
+   public void testSendString() {
+      final ClientMessage sent = server.sendMessage(TEST_ADDRESS, TEST_BODY);
+      assertNotNull(sent, String.format(ASSERT_SENT_FORMAT, TEST_ADDRESS));
+
+      final ClientMessage received = server.receiveMessage(TEST_QUEUE);
+      assertNotNull(received, String.format(ASSERT_RECEIVED_FORMAT, 
TEST_ADDRESS));
+      assertEquals(TEST_BODY, received.getReadOnlyBodyBuffer().readString());
    }
 
    @Test
-   public void testSendString() {
-      sent = server.sendMessage(TEST_ADDRESS, TEST_BODY);
+   public void testSendTwoStringMesssages() {
+      final ClientMessage sent1 = server.sendMessage(TEST_ADDRESS, TEST_BODY);
+      assertNotNull(sent1, String.format(ASSERT_SENT_FORMAT, TEST_ADDRESS));
+      final ClientMessage sent2 = server.sendMessage(TEST_ADDRESS, TEST_BODY + 
"-Second");
+      assertNotNull(sent2, String.format(ASSERT_SENT_FORMAT, TEST_ADDRESS));
+
+      {
+         final ClientMessage received = server.receiveMessage(TEST_QUEUE);
+         assertNotNull(received, String.format(ASSERT_RECEIVED_FORMAT, 
TEST_ADDRESS));
+         assertEquals(TEST_BODY, 
received.getReadOnlyBodyBuffer().readString());
+      }
+      {
+         final ClientMessage received = server.receiveMessage(TEST_QUEUE);
+         assertNotNull(received, String.format(ASSERT_RECEIVED_FORMAT, 
TEST_ADDRESS));
+         assertEquals(TEST_BODY + "-Second", 
received.getReadOnlyBodyBuffer().readString());
+      }
    }
 
    @Test
    public void testSendBytesAndProperties() {
-      sent = server.sendMessageWithProperties(TEST_ADDRESS, 
TEST_BODY.getBytes(), TEST_PROPERTIES);
+      final byte[] bodyBytes = TEST_BODY.getBytes();
+
+      final ClientMessage sent = 
server.sendMessageWithProperties(TEST_ADDRESS, bodyBytes, TEST_PROPERTIES);
+      assertNotNull(sent, String.format(ASSERT_SENT_FORMAT, TEST_ADDRESS));
+
+      final ClientMessage received = server.receiveMessage(TEST_QUEUE);
+      assertNotNull(received, String.format(ASSERT_RECEIVED_FORMAT, 
TEST_ADDRESS));
+      final ActiveMQBuffer body = received.getReadOnlyBodyBuffer();
+      final byte[] receivedBody = new byte[body.readableBytes()];
+      body.readBytes(receivedBody);
+      assertArrayEquals(TEST_BODY.getBytes(), receivedBody);
+
+      TEST_PROPERTIES.forEach((k, v) -> {
+         assertTrue(received.containsProperty(k));
+         assertEquals(v, received.getStringProperty(k));
+      });
    }
 
    @Test
    public void testSendStringAndProperties() {
-      sent = server.sendMessageWithProperties(TEST_ADDRESS, TEST_BODY, 
TEST_PROPERTIES);
-   }
+      final ClientMessage sent = 
server.sendMessageWithProperties(TEST_ADDRESS, TEST_BODY, TEST_PROPERTIES);
+      assertNotNull(sent, String.format(ASSERT_SENT_FORMAT, TEST_ADDRESS));
+
+      final ClientMessage received = server.receiveMessage(TEST_QUEUE);
+      assertNotNull(received, String.format(ASSERT_RECEIVED_FORMAT, 
TEST_ADDRESS));
+      assertEquals(TEST_BODY, received.getReadOnlyBodyBuffer().readString());
 
+      TEST_PROPERTIES.forEach((k, v) -> {
+         assertTrue(received.containsProperty(k));
+         assertEquals(v, received.getStringProperty(k));
+      });
+   }
 }
diff --git 
a/artemis-junit/artemis-junit-commons/src/main/java/org/apache/activemq/artemis/junit/ActiveMQDynamicProducerDelegate.java
 
b/artemis-junit/artemis-junit-commons/src/main/java/org/apache/activemq/artemis/junit/ActiveMQDynamicProducerDelegate.java
index 0185df80b6..c8bd78378f 100644
--- 
a/artemis-junit/artemis-junit-commons/src/main/java/org/apache/activemq/artemis/junit/ActiveMQDynamicProducerDelegate.java
+++ 
b/artemis-junit/artemis-junit-commons/src/main/java/org/apache/activemq/artemis/junit/ActiveMQDynamicProducerDelegate.java
@@ -137,16 +137,15 @@ public class ActiveMQDynamicProducerDelegate extends 
ActiveMQProducerDelegate
 
    @Override
    public ClientMessage sendMessage(SimpleString targetAddress, byte[] body, 
Map<String, Object> properties) {
-      ClientMessage message = createMessage(body);
+      ClientMessage message = createMessage(body, properties);
       sendMessage(targetAddress, message);
       return message;
    }
 
    @Override
    public ClientMessage sendMessage(SimpleString targetAddress, String body, 
Map<String, Object> properties) {
-      ClientMessage message = createMessage(body);
+      ClientMessage message = createMessage(body, properties);
       sendMessage(targetAddress, message);
       return message;
    }
-
 }
diff --git 
a/artemis-junit/artemis-junit-commons/src/main/java/org/apache/activemq/artemis/junit/ActiveMQProducerDelegate.java
 
b/artemis-junit/artemis-junit-commons/src/main/java/org/apache/activemq/artemis/junit/ActiveMQProducerDelegate.java
index 8619d5ffc3..84d50888e5 100644
--- 
a/artemis-junit/artemis-junit-commons/src/main/java/org/apache/activemq/artemis/junit/ActiveMQProducerDelegate.java
+++ 
b/artemis-junit/artemis-junit-commons/src/main/java/org/apache/activemq/artemis/junit/ActiveMQProducerDelegate.java
@@ -223,16 +223,15 @@ public class ActiveMQProducerDelegate extends 
AbstractActiveMQClientDelegate imp
 
    @Override
    public ClientMessage sendMessage(byte[] body, Map<String, Object> 
properties) {
-      ClientMessage message = createMessage(body);
+      ClientMessage message = createMessage(body, properties);
       sendMessage(message);
       return message;
    }
 
    @Override
    public ClientMessage sendMessage(String body, Map<String, Object> 
properties) {
-      ClientMessage message = createMessage(body);
+      ClientMessage message = createMessage(body, properties);
       sendMessage(message);
       return message;
    }
-
 }
diff --git 
a/artemis-junit/artemis-junit-commons/src/main/java/org/apache/activemq/artemis/junit/EmbeddedActiveMQDelegate.java
 
b/artemis-junit/artemis-junit-commons/src/main/java/org/apache/activemq/artemis/junit/EmbeddedActiveMQDelegate.java
index 028378b7c5..a86d064bec 100644
--- 
a/artemis-junit/artemis-junit-commons/src/main/java/org/apache/activemq/artemis/junit/EmbeddedActiveMQDelegate.java
+++ 
b/artemis-junit/artemis-junit-commons/src/main/java/org/apache/activemq/artemis/junit/EmbeddedActiveMQDelegate.java
@@ -471,7 +471,6 @@ public class EmbeddedActiveMQDelegate implements 
EmbeddedActiveMQOperations {
 
    @Override
    public ClientMessage sendMessageWithProperties(SimpleString address, String 
body, Map<String, Object> properties) {
-
       ClientMessage message = createMessageWithProperties(body, properties);
       sendMessage(address, message);
       return message;
@@ -626,43 +625,55 @@ public class EmbeddedActiveMQDelegate implements 
EmbeddedActiveMQOperations {
       public ClientMessage receiveMessage(SimpleString address, long timeout, 
boolean browseOnly) {
          checkSession();
 
-         ClientConsumer consumer = null;
-         try {
-            consumer = session.createConsumer(address, browseOnly);
-         } catch (ActiveMQException amqEx) {
-            throw new EmbeddedActiveMQResourceException(String.format("Failed 
to create consumer for %s",
-                                                                      
address.toString()),
-                                                        amqEx);
-         }
-
-         ClientMessage message = null;
-         if (timeout > 0) {
-            try {
-               message = consumer.receive(timeout);
-            } catch (ActiveMQException amqEx) {
-               throw new 
EmbeddedActiveMQResourceException(String.format("ClientConsumer.receive( 
timeout = %d ) for %s failed",
-                                                                         
timeout, address.toString()),
-                                                           amqEx);
+         EmbeddedActiveMQResourceException failureCause = null;
+
+         try (ClientConsumer consumer = session.createConsumer(address, 
browseOnly)) {
+            ClientMessage message = null;
+            if (timeout > 0) {
+               try {
+                  message = consumer.receive(timeout);
+               } catch (ActiveMQException amqEx) {
+                  failureCause =  new 
EmbeddedActiveMQResourceException(String.format("ClientConsumer.receive( 
timeout = %d ) for %s failed",
+                                                                        
timeout, address.toString()), amqEx);
+                  throw failureCause;
+               }
+            } else if (timeout == 0) {
+               try {
+                  message = consumer.receiveImmediate();
+               } catch (ActiveMQException amqEx) {
+                  failureCause = new 
EmbeddedActiveMQResourceException(String.format("ClientConsumer.receiveImmediate()
 for %s failed",
+                                                                       
address.toString()), amqEx);
+                  throw failureCause;
+               }
+            } else {
+               try {
+                  message = consumer.receive();
+               } catch (ActiveMQException amqEx) {
+                  failureCause = new 
EmbeddedActiveMQResourceException(String.format("ClientConsumer.receive() for 
%s failed",
+                                                                       
address.toString()), amqEx);
+                  throw failureCause;
+               }
             }
-         } else if (timeout == 0) {
-            try {
-               message = consumer.receiveImmediate();
-            } catch (ActiveMQException amqEx) {
-               throw new 
EmbeddedActiveMQResourceException(String.format("ClientConsumer.receiveImmediate()
 for %s failed",
-                                                                         
address.toString()),
-                                                           amqEx);
+
+            if (message != null) {
+               try {
+                  message.acknowledge();
+               } catch (ActiveMQException amqEx) {
+                  failureCause = new 
EmbeddedActiveMQResourceException(String.format("ClientMessage.acknowledge() 
for %s from %s failed",
+                                                                       
message, address.toString()), amqEx);
+                  throw failureCause;
+               }
             }
-         } else {
-            try {
-               message = consumer.receive();
-            } catch (ActiveMQException amqEx) {
-               throw new 
EmbeddedActiveMQResourceException(String.format("ClientConsumer.receive() for 
%s failed",
-                                                                         
address.toString()),
-                                                           amqEx);
+
+            return message;
+         } catch (ActiveMQException amqEx) {
+            if (failureCause == null) {
+               failureCause = new 
EmbeddedActiveMQResourceException(String.format("Failed to create consumer for 
%s",
+                                                                    
address.toString()), amqEx);
             }
-         }
 
-         return message;
+            throw failureCause;
+         }
       }
 
       void checkSession() {

Reply via email to