Add JMS2RMQMessageConvertTest & RMQ2JMSMessageConvertTest
Project: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/commit/d09c5705 Tree: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/tree/d09c5705 Diff: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/diff/d09c5705 Branch: refs/heads/jms-dev-1.1.0 Commit: d09c57053eff855ae54c370600785f9c187ac701 Parents: 41ef8fd Author: zhangke <zhangke_beij...@qq.com> Authored: Tue Feb 28 17:40:27 2017 +0800 Committer: zhangke <zhangke_beij...@qq.com> Committed: Tue Feb 28 17:40:27 2017 +0800 ---------------------------------------------------------------------- .../jms/msg/convert/RMQ2JMSMessageConvert.java | 5 +- .../msg/convert/JMS2RMQMessageConvertTest.java | 60 ++++++++++++++++++ .../msg/convert/RMQ2JMSMessageConvertTest.java | 65 ++++++++++++++++++++ 3 files changed, 129 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/d09c5705/core/src/main/java/org/apache/rocketmq/jms/msg/convert/RMQ2JMSMessageConvert.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/rocketmq/jms/msg/convert/RMQ2JMSMessageConvert.java b/core/src/main/java/org/apache/rocketmq/jms/msg/convert/RMQ2JMSMessageConvert.java index a86efd8..cc4ad00 100644 --- a/core/src/main/java/org/apache/rocketmq/jms/msg/convert/RMQ2JMSMessageConvert.java +++ b/core/src/main/java/org/apache/rocketmq/jms/msg/convert/RMQ2JMSMessageConvert.java @@ -41,7 +41,10 @@ public class RMQ2JMSMessageConvert { public static Message convert(MessageExt rmqMsg) throws JMSException { if (rmqMsg == null) { - return null; + throw new IllegalArgumentException("RocketMQ message could not be null"); + } + if (rmqMsg.getBody() == null) { + throw new IllegalArgumentException("RocketMQ message body could not be null"); } AbstractJMSMessage jmsMsg = newAbstractJMSMessage(rmqMsg.getUserProperty(MSG_MODEL_NAME), rmqMsg.getBody()); http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/d09c5705/core/src/test/java/org/apache/rocketmq/jms/msg/convert/JMS2RMQMessageConvertTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/rocketmq/jms/msg/convert/JMS2RMQMessageConvertTest.java b/core/src/test/java/org/apache/rocketmq/jms/msg/convert/JMS2RMQMessageConvertTest.java new file mode 100644 index 0000000..4830e6a --- /dev/null +++ b/core/src/test/java/org/apache/rocketmq/jms/msg/convert/JMS2RMQMessageConvertTest.java @@ -0,0 +1,60 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.rocketmq.jms.msg.convert; + +import org.apache.rocketmq.common.message.MessageExt; +import org.apache.rocketmq.jms.RocketMQTopic; +import org.apache.rocketmq.jms.msg.AbstractJMSMessage; +import org.apache.rocketmq.jms.msg.JMSTextMessage; +import org.apache.rocketmq.jms.msg.enums.JMSHeaderEnum; +import org.apache.rocketmq.jms.msg.enums.JMSMessageModelEnum; +import org.junit.Test; + +import static org.apache.rocketmq.jms.msg.enums.JMSMessageModelEnum.MSG_MODEL_NAME; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.core.Is.is; + +public class JMS2RMQMessageConvertTest { + + @Test + public void testConvert() throws Exception { + AbstractJMSMessage jmsMessage = new JMSTextMessage("text"); + + // given + jmsMessage.setJMSDestination(new RocketMQTopic("topic")); + jmsMessage.setJMSMessageID("ID:XXX"); + jmsMessage.setJMSTimestamp(1488273583542L); + jmsMessage.setJMSExpiration(0L); + + jmsMessage.setStringProperty("MyProperty", "MyValue"); + + // when + MessageExt rmqMessage = JMS2RMQMessageConvert.convert(jmsMessage); + + // then + assertThat(rmqMessage.getTopic(), is("topic")); + assertThat(rmqMessage.getUserProperty(JMSHeaderEnum.JMSMessageID.name()), is("ID:XXX")); + assertThat(rmqMessage.getBornTimestamp(), is(1488273583542L)); + assertThat(rmqMessage.getUserProperty(JMSHeaderEnum.JMSExpiration.name()), is("0")); + assertThat(rmqMessage.getKeys(), is("ID:XXX")); + + assertThat(rmqMessage.getUserProperty("MyProperty"), is("MyValue")); + assertThat(rmqMessage.getUserProperty(MSG_MODEL_NAME), is(JMSMessageModelEnum.STRING.name())); + assertThat(new String(rmqMessage.getBody()), is("text")); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-rocketmq-externals/blob/d09c5705/core/src/test/java/org/apache/rocketmq/jms/msg/convert/RMQ2JMSMessageConvertTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/rocketmq/jms/msg/convert/RMQ2JMSMessageConvertTest.java b/core/src/test/java/org/apache/rocketmq/jms/msg/convert/RMQ2JMSMessageConvertTest.java new file mode 100644 index 0000000..530cc12 --- /dev/null +++ b/core/src/test/java/org/apache/rocketmq/jms/msg/convert/RMQ2JMSMessageConvertTest.java @@ -0,0 +1,65 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.rocketmq.jms.msg.convert; + +import javax.jms.Message; +import org.apache.rocketmq.common.message.MessageExt; +import org.apache.rocketmq.jms.msg.JMSBytesMessage; +import org.apache.rocketmq.jms.msg.enums.JMSHeaderEnum; +import org.apache.rocketmq.jms.msg.enums.JMSMessageModelEnum; +import org.apache.rocketmq.jms.msg.enums.JMSPropertiesEnum; +import org.apache.rocketmq.jms.support.JMSUtils; +import org.junit.Test; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.core.Is.is; + +public class RMQ2JMSMessageConvertTest { + + @Test + public void testConvert() throws Exception { + MessageExt rmqMessage = new MessageExt(); + + // given + rmqMessage.setBody("body".getBytes()); + rmqMessage.putUserProperty(JMSMessageModelEnum.MSG_MODEL_NAME, JMSMessageModelEnum.BYTE.name()); + rmqMessage.putUserProperty(JMSHeaderEnum.JMSMessageID.name(), "ID:YYY"); + rmqMessage.setBornTimestamp(1488273585542L); + rmqMessage.putUserProperty(JMSHeaderEnum.JMSExpiration.name(), "0"); + rmqMessage.setReconsumeTimes(2); + rmqMessage.setTopic("topic"); + + rmqMessage.putUserProperty(JMSPropertiesEnum.JMSXDeliveryCount.name(), "2"); + rmqMessage.putUserProperty("MyProperty", "MyValue"); + + // when + Message jmsMessage = RMQ2JMSMessageConvert.convert(rmqMessage); + + // then + assertThat(JMSBytesMessage.class.isInstance(jmsMessage), is(true)); + assertThat(jmsMessage.getJMSMessageID(), is("ID:YYY")); + assertThat(jmsMessage.getJMSTimestamp(), is(1488273585542L)); + assertThat(jmsMessage.getJMSExpiration(), is(0L)); + assertThat(jmsMessage.getJMSRedelivered(), is(true)); + assertThat(JMSUtils.getDestinationName(jmsMessage.getJMSDestination()), is("topic")); + + assertThat(jmsMessage.getStringProperty("MyProperty"), is("MyValue")); + assertThat(jmsMessage.getIntProperty(JMSPropertiesEnum.JMSXDeliveryCount.name()), is(2)); + } + +} \ No newline at end of file