gemmellr commented on code in PR #4426:
URL: https://github.com/apache/activemq-artemis/pull/4426#discussion_r1158316804


##########
tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/multiprotocol/JMSMessageConsumerTest.java:
##########
@@ -193,4 +195,66 @@ private void 
testDurableSubscriptionWithConfigurationManagedQueue(ConnectionSupp
          assertEquals("color = 'BLUE'", 
queue.getFilter().getFilterString().toString());
       }
    }
+
+   @Test(timeout = 30000)
+   public void testMapMessageConversionBetweenOpenWireAndAMQP() throws 
Exception {
+      testMapMessageConversion(createOpenWireConnection(), createConnection());
+   }
+
+   @Test(timeout = 30000)
+   public void testMapMessageConversionBetweenAMQPAndOpenWire() throws 
Exception {
+      testMapMessageConversion(createConnection(), createOpenWireConnection());
+   }
+
+   @Test(timeout = 30000)
+   public void testMapMessageConversionBetweenCoreAndAMQP() throws Exception {
+      testMapMessageConversion(createCoreConnection(), createConnection());
+   }
+
+   @Test(timeout = 30000)
+   public void testMapMessageConversionBetweenAMQPAndCore() throws Exception {
+      testMapMessageConversion(createConnection(), createCoreConnection());
+   }
+
+   @Test(timeout = 30000)
+   public void testMapMessageConversionBetweenCoreAndOpenWire() throws 
Exception {
+      testMapMessageConversion(createCoreConnection(), 
createOpenWireConnection());
+   }
+
+   @Test(timeout = 30000)
+   public void testMapMessageConversionBetweenOpenWireAndCore() throws 
Exception {
+      testMapMessageConversion(createOpenWireConnection(), 
createCoreConnection());
+   }
+
+   private void testMapMessageConversion(Connection sender, Connection 
consumer) throws Exception {
+      final String NAME = "myPropertyName";
+      final String VALUE = RandomUtil.randomString();
+
+      try {
+         Session session1 = sender.createSession(false, 
Session.AUTO_ACKNOWLEDGE);
+         Session session2 = consumer.createSession(false, 
Session.AUTO_ACKNOWLEDGE);
+
+         javax.jms.Queue queue1 = session1.createQueue(getQueueName());
+         javax.jms.Queue queue2 = session2.createQueue(getQueueName());

Review Comment:
   Should be able to use the same destination object for both, but if wanting 
to avoid it then just inlining the creations might be neater given the 
variables arent reused, avoiding them giving impression there are 'two queues' 
when its just one.



##########
artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/OpenWireMessageConverter.java:
##########
@@ -111,9 +111,13 @@ public static org.apache.activemq.artemis.api.core.Message 
inbound(final Message
       final ActiveMQBuffer body = coreMessage.getBodyBuffer();
 
       final ByteSequence contents = messageSend.getContent();
-      if (contents == null && coreType == 
org.apache.activemq.artemis.api.core.Message.TEXT_TYPE) {
-         body.writeNullableString(null);
-      } else if (contents != null) {
+      if (contents == null) {
+         if (coreType == 
org.apache.activemq.artemis.api.core.Message.TEXT_TYPE) {
+            body.writeNullableString(null);
+         } else if (coreType == 
org.apache.activemq.artemis.api.core.Message.MAP_TYPE) {
+            body.writeByte(DataConstants.NULL);
+         }

Review Comment:
   The new tests dont appear to cover this case, the main addition of the PR 
and how the issue was found?
   
   Also feels like this could be unit tested rather than system tested.



##########
tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/multiprotocol/JMSMessageConsumerTest.java:
##########
@@ -193,4 +195,66 @@ private void 
testDurableSubscriptionWithConfigurationManagedQueue(ConnectionSupp
          assertEquals("color = 'BLUE'", 
queue.getFilter().getFilterString().toString());
       }
    }
+
+   @Test(timeout = 30000)
+   public void testMapMessageConversionBetweenOpenWireAndAMQP() throws 
Exception {
+      testMapMessageConversion(createOpenWireConnection(), createConnection());
+   }
+
+   @Test(timeout = 30000)
+   public void testMapMessageConversionBetweenAMQPAndOpenWire() throws 
Exception {
+      testMapMessageConversion(createConnection(), createOpenWireConnection());
+   }
+
+   @Test(timeout = 30000)
+   public void testMapMessageConversionBetweenCoreAndAMQP() throws Exception {
+      testMapMessageConversion(createCoreConnection(), createConnection());
+   }
+
+   @Test(timeout = 30000)
+   public void testMapMessageConversionBetweenAMQPAndCore() throws Exception {
+      testMapMessageConversion(createConnection(), createCoreConnection());
+   }
+
+   @Test(timeout = 30000)
+   public void testMapMessageConversionBetweenCoreAndOpenWire() throws 
Exception {
+      testMapMessageConversion(createCoreConnection(), 
createOpenWireConnection());
+   }
+
+   @Test(timeout = 30000)
+   public void testMapMessageConversionBetweenOpenWireAndCore() throws 
Exception {
+      testMapMessageConversion(createOpenWireConnection(), 
createCoreConnection());
+   }
+
+   private void testMapMessageConversion(Connection sender, Connection 
consumer) throws Exception {
+      final String NAME = "myPropertyName";
+      final String VALUE = RandomUtil.randomString();
+
+      try {
+         Session session1 = sender.createSession(false, 
Session.AUTO_ACKNOWLEDGE);
+         Session session2 = consumer.createSession(false, 
Session.AUTO_ACKNOWLEDGE);
+
+         javax.jms.Queue queue1 = session1.createQueue(getQueueName());
+         javax.jms.Queue queue2 = session2.createQueue(getQueueName());
+
+         final MessageConsumer consumer2 = session2.createConsumer(queue2);
+
+         MessageProducer producer = session1.createProducer(queue1);
+         producer.setDeliveryMode(DeliveryMode.PERSISTENT);
+         sender.start();
+
+         MapMessage message = session1.createMapMessage();
+         message.setStringProperty(NAME, VALUE);
+         producer.send(message);
+
+         Message received = consumer2.receive(100);

Review Comment:
   100 seems a little low for a message we do expect to receive, could be 
unreliable in slow CI envs.



##########
tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/multiprotocol/JMSMessageConsumerTest.java:
##########
@@ -193,4 +195,66 @@ private void 
testDurableSubscriptionWithConfigurationManagedQueue(ConnectionSupp
          assertEquals("color = 'BLUE'", 
queue.getFilter().getFilterString().toString());
       }
    }
+
+   @Test(timeout = 30000)
+   public void testMapMessageConversionBetweenOpenWireAndAMQP() throws 
Exception {
+      testMapMessageConversion(createOpenWireConnection(), createConnection());
+   }
+
+   @Test(timeout = 30000)
+   public void testMapMessageConversionBetweenAMQPAndOpenWire() throws 
Exception {
+      testMapMessageConversion(createConnection(), createOpenWireConnection());
+   }
+
+   @Test(timeout = 30000)
+   public void testMapMessageConversionBetweenCoreAndAMQP() throws Exception {
+      testMapMessageConversion(createCoreConnection(), createConnection());
+   }
+
+   @Test(timeout = 30000)
+   public void testMapMessageConversionBetweenAMQPAndCore() throws Exception {
+      testMapMessageConversion(createConnection(), createCoreConnection());
+   }
+
+   @Test(timeout = 30000)
+   public void testMapMessageConversionBetweenCoreAndOpenWire() throws 
Exception {
+      testMapMessageConversion(createCoreConnection(), 
createOpenWireConnection());
+   }
+
+   @Test(timeout = 30000)
+   public void testMapMessageConversionBetweenOpenWireAndCore() throws 
Exception {
+      testMapMessageConversion(createOpenWireConnection(), 
createCoreConnection());
+   }
+
+   private void testMapMessageConversion(Connection sender, Connection 
consumer) throws Exception {

Review Comment:
   Something like senderConnection and consumerConnection would seem more 
descriptive...you could then follow through with 'sender[Foo]' and 
'consumer[Foo]' convention for related objects and wouldnt need to call the 
sole consumer "consumer2".



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to