Repository: qpid-jms Updated Branches: refs/heads/master dd6a44f24 -> 7d449fff1
QPIDJMS-207 Adds more tests for JMSProducer and fixes setJMSReplyTo Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/7d449fff Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/7d449fff Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/7d449fff Branch: refs/heads/master Commit: 7d449fff11c2742f3992f0ca981615feea434a75 Parents: dd6a44f Author: Timothy Bish <[email protected]> Authored: Tue Sep 13 16:14:14 2016 -0400 Committer: Timothy Bish <[email protected]> Committed: Tue Sep 13 16:14:14 2016 -0400 ---------------------------------------------------------------------- .../java/org/apache/qpid/jms/JmsProducer.java | 2 +- .../qpid/jms/producer/JmsProducerTest.java | 646 +++++++++++++++++++ 2 files changed, 647 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/7d449fff/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsProducer.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsProducer.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsProducer.java index a90ec23..11392f6 100644 --- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsProducer.java +++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsProducer.java @@ -341,7 +341,7 @@ public class JmsProducer implements JMSProducer { @Override public JMSProducer setJMSReplyTo(Destination replyTo) { try { - JmsMessageTransformation.transformDestination(session.getConnection(), replyTo); + this.replyTo = JmsMessageTransformation.transformDestination(session.getConnection(), replyTo); } catch (JMSException e) { throw JmsExceptionSupport.createRuntimeException(e); } http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/7d449fff/qpid-jms-client/src/test/java/org/apache/qpid/jms/producer/JmsProducerTest.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/producer/JmsProducerTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/producer/JmsProducerTest.java index 5a0938a..8b52959 100644 --- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/producer/JmsProducerTest.java +++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/producer/JmsProducerTest.java @@ -19,18 +19,31 @@ package org.apache.qpid.jms.producer; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; +import java.nio.charset.StandardCharsets; import java.util.UUID; +import javax.jms.CompletionListener; +import javax.jms.DeliveryMode; +import javax.jms.Destination; +import javax.jms.JMSException; import javax.jms.JMSProducer; +import javax.jms.Message; import javax.jms.MessageFormatRuntimeException; import org.apache.qpid.jms.JmsConnectionTestSupport; import org.apache.qpid.jms.JmsContext; +import org.apache.qpid.jms.JmsMessageProducer; +import org.apache.qpid.jms.JmsProducer; +import org.apache.qpid.jms.JmsSession; +import org.apache.qpid.jms.JmsTopic; import org.junit.Before; import org.junit.Test; +import org.mockito.Mockito; /** * Test various behaviors of the JMSProducer implementation. @@ -39,9 +52,38 @@ public class JmsProducerTest extends JmsConnectionTestSupport { private JmsContext context; + private final String STRING_PROPERTY_NAME = "StringProperty"; + private final String STRING_PROPERTY_VALUE = UUID.randomUUID().toString(); + + private final String BYTE_PROPERTY_NAME = "ByteProperty"; + private final byte BYTE_PROPERTY_VALUE = Byte.MAX_VALUE; + + private final String BOOLEAN_PROPERTY_NAME = "BooleanProperty"; + private final boolean BOOLEAN_PROPERTY_VALUE = Boolean.TRUE; + + private final String SHORT_PROPERTY_NAME = "ShortProperty"; + private final short SHORT_PROPERTY_VALUE = Short.MAX_VALUE; + + private final String INTEGER_PROPERTY_NAME = "IntegerProperty"; + private final int INTEGER_PROPERTY_VALUE = Integer.MAX_VALUE; + + private final String LONG_PROPERTY_NAME = "LongProperty"; + private final long LONG_PROPERTY_VALUE = Long.MAX_VALUE; + + private final String DOUBLE_PROPERTY_NAME = "DoubleProperty"; + private final double DOUBLE_PROPERTY_VALUE = Double.MAX_VALUE; + + private final String FLOAT_PROPERTY_NAME = "FloatProperty"; + private final float FLOAT_PROPERTY_VALUE = Float.MAX_VALUE; + private final String BAD_PROPERTY_NAME = "%_BAD_PROPERTY_NAME"; private final String GOOD_PROPERTY_NAME = "GOOD_PROPERTY_NAME"; + private final Destination JMS_DESTINATION = new JmsTopic("test.target.topic:001"); + private final Destination JMS_REPLY_TO = new JmsTopic("test.replyto.topic:001"); + private final String JMS_CORRELATION_ID = UUID.randomUUID().toString(); + private final String JMS_TYPE_STRING = "TestType"; + @Override @Before public void setUp() throws Exception { @@ -81,6 +123,507 @@ public class JmsProducerTest extends JmsConnectionTestSupport { } @Test + public void testPropertyExists() { + JMSProducer producer = context.createProducer(); + + producer.setProperty("Property_1", "1"); + producer.setProperty("Property_2", "2"); + producer.setProperty("Property_3", "3"); + + assertEquals(3, producer.getPropertyNames().size()); + + assertTrue(producer.propertyExists("Property_1")); + assertTrue(producer.propertyExists("Property_2")); + assertTrue(producer.propertyExists("Property_3")); + assertFalse(producer.propertyExists("Property_4")); + } + + //----- Test for JMS Message Headers are stored --------------------------// + + @Test + public void testJMSCorrelationID() { + JMSProducer producer = context.createProducer(); + + producer.setJMSCorrelationID(JMS_CORRELATION_ID); + assertEquals(JMS_CORRELATION_ID, producer.getJMSCorrelationID()); + } + + @Test + public void testJMSCorrelationIDBytes() { + JMSProducer producer = context.createProducer(); + + producer.setJMSCorrelationIDAsBytes(JMS_CORRELATION_ID.getBytes(StandardCharsets.UTF_8)); + assertEquals(JMS_CORRELATION_ID, new String(producer.getJMSCorrelationIDAsBytes(), StandardCharsets.UTF_8)); + } + + @Test + public void testJMSReplyTo() { + JMSProducer producer = context.createProducer(); + + producer.setJMSReplyTo(JMS_REPLY_TO); + assertTrue(JMS_REPLY_TO.equals(producer.getJMSReplyTo())); + } + + @Test + public void testJMSType() { + JMSProducer producer = context.createProducer(); + + producer.setJMSType(JMS_TYPE_STRING); + assertEquals(JMS_TYPE_STRING, producer.getJMSType()); + } + + //----- Test for get property on matching types --------------------------// + + @Test + public void testGetStringPropetry() { + JMSProducer producer = context.createProducer(); + producer.setProperty(STRING_PROPERTY_NAME, STRING_PROPERTY_VALUE); + assertEquals(STRING_PROPERTY_VALUE, producer.getStringProperty(STRING_PROPERTY_NAME)); + } + + @Test + public void testGetBytePropetry() { + JMSProducer producer = context.createProducer(); + producer.setProperty(BYTE_PROPERTY_NAME, BYTE_PROPERTY_VALUE); + assertEquals(BYTE_PROPERTY_VALUE, producer.getByteProperty(BYTE_PROPERTY_NAME)); + } + + @Test + public void testGetBooleanPropetry() { + JMSProducer producer = context.createProducer(); + producer.setProperty(BOOLEAN_PROPERTY_NAME, BOOLEAN_PROPERTY_VALUE); + assertEquals(BOOLEAN_PROPERTY_VALUE, producer.getBooleanProperty(BOOLEAN_PROPERTY_NAME)); + } + + @Test + public void testGetShortPropetry() { + JMSProducer producer = context.createProducer(); + producer.setProperty(SHORT_PROPERTY_NAME, SHORT_PROPERTY_VALUE); + assertEquals(SHORT_PROPERTY_VALUE, producer.getShortProperty(SHORT_PROPERTY_NAME)); + } + + @Test + public void testGetIntegerPropetry() { + JMSProducer producer = context.createProducer(); + producer.setProperty(INTEGER_PROPERTY_NAME, INTEGER_PROPERTY_VALUE); + assertEquals(INTEGER_PROPERTY_VALUE, producer.getIntProperty(INTEGER_PROPERTY_NAME)); + } + + @Test + public void testGetLongPropetry() { + JMSProducer producer = context.createProducer(); + producer.setProperty(LONG_PROPERTY_NAME, LONG_PROPERTY_VALUE); + assertEquals(LONG_PROPERTY_VALUE, producer.getLongProperty(LONG_PROPERTY_NAME)); + } + + @Test + public void testGetDoublePropetry() { + JMSProducer producer = context.createProducer(); + producer.setProperty(DOUBLE_PROPERTY_NAME, DOUBLE_PROPERTY_VALUE); + assertEquals(DOUBLE_PROPERTY_VALUE, producer.getDoubleProperty(DOUBLE_PROPERTY_NAME), 0.0); + } + + @Test + public void testGetFloatPropetry() { + JMSProducer producer = context.createProducer(); + producer.setProperty(FLOAT_PROPERTY_NAME, FLOAT_PROPERTY_VALUE); + assertEquals(FLOAT_PROPERTY_VALUE, producer.getFloatProperty(FLOAT_PROPERTY_NAME), 0.0f); + } + + //----- Test for set property handling -----------------------------------// + + @Test + public void testSetPropertyConversions() { + JMSProducer producer = context.createProducer(); + + producer.setProperty(STRING_PROPERTY_NAME, STRING_PROPERTY_VALUE); + producer.setProperty(BYTE_PROPERTY_NAME, Byte.valueOf(BYTE_PROPERTY_VALUE)); + producer.setProperty(BOOLEAN_PROPERTY_NAME, Boolean.valueOf(BOOLEAN_PROPERTY_VALUE)); + producer.setProperty(SHORT_PROPERTY_NAME, Short.valueOf(SHORT_PROPERTY_VALUE)); + producer.setProperty(INTEGER_PROPERTY_NAME, Integer.valueOf(INTEGER_PROPERTY_VALUE)); + producer.setProperty(LONG_PROPERTY_NAME, Long.valueOf(LONG_PROPERTY_VALUE)); + producer.setProperty(FLOAT_PROPERTY_NAME, Float.valueOf(FLOAT_PROPERTY_VALUE)); + producer.setProperty(DOUBLE_PROPERTY_NAME, Double.valueOf(DOUBLE_PROPERTY_VALUE)); + + try { + producer.setProperty(STRING_PROPERTY_NAME, UUID.randomUUID()); + fail("Should not be able to set non-primitive type"); + } catch (MessageFormatRuntimeException mfe) { + } + + assertNull(producer.getObjectProperty("Unknown")); + + assertEquals(STRING_PROPERTY_VALUE, producer.getStringProperty(STRING_PROPERTY_NAME)); + assertEquals(BYTE_PROPERTY_VALUE, producer.getByteProperty(BYTE_PROPERTY_NAME)); + assertEquals(BOOLEAN_PROPERTY_VALUE, producer.getBooleanProperty(BOOLEAN_PROPERTY_NAME)); + assertEquals(SHORT_PROPERTY_VALUE, producer.getShortProperty(SHORT_PROPERTY_NAME)); + assertEquals(INTEGER_PROPERTY_VALUE, producer.getIntProperty(INTEGER_PROPERTY_NAME)); + assertEquals(LONG_PROPERTY_VALUE, producer.getLongProperty(LONG_PROPERTY_NAME)); + assertEquals(FLOAT_PROPERTY_VALUE, producer.getFloatProperty(FLOAT_PROPERTY_NAME), 0.0); + assertEquals(DOUBLE_PROPERTY_VALUE, producer.getDoubleProperty(DOUBLE_PROPERTY_NAME), 0.0); + + assertEquals(STRING_PROPERTY_VALUE, producer.getObjectProperty(STRING_PROPERTY_NAME)); + assertEquals(BYTE_PROPERTY_VALUE, producer.getObjectProperty(BYTE_PROPERTY_NAME)); + assertEquals(BOOLEAN_PROPERTY_VALUE, producer.getObjectProperty(BOOLEAN_PROPERTY_NAME)); + assertEquals(SHORT_PROPERTY_VALUE, producer.getObjectProperty(SHORT_PROPERTY_NAME)); + assertEquals(INTEGER_PROPERTY_VALUE, producer.getObjectProperty(INTEGER_PROPERTY_NAME)); + assertEquals(LONG_PROPERTY_VALUE, producer.getObjectProperty(LONG_PROPERTY_NAME)); + assertEquals(FLOAT_PROPERTY_VALUE, producer.getObjectProperty(FLOAT_PROPERTY_NAME)); + assertEquals(DOUBLE_PROPERTY_VALUE, producer.getObjectProperty(DOUBLE_PROPERTY_NAME)); + } + + //----- Test for get property conversions --------------------------------// + + @Test + public void testStringPropertyConversions() { + JMSProducer producer = context.createProducer(); + producer.setProperty(STRING_PROPERTY_NAME, STRING_PROPERTY_VALUE); + producer.setProperty(BYTE_PROPERTY_NAME, BYTE_PROPERTY_VALUE); + producer.setProperty(BOOLEAN_PROPERTY_NAME, BOOLEAN_PROPERTY_VALUE); + producer.setProperty(SHORT_PROPERTY_NAME, SHORT_PROPERTY_VALUE); + producer.setProperty(INTEGER_PROPERTY_NAME, INTEGER_PROPERTY_VALUE); + producer.setProperty(LONG_PROPERTY_NAME, LONG_PROPERTY_VALUE); + producer.setProperty(FLOAT_PROPERTY_NAME, FLOAT_PROPERTY_VALUE); + producer.setProperty(DOUBLE_PROPERTY_NAME, DOUBLE_PROPERTY_VALUE); + + assertEquals(String.valueOf(STRING_PROPERTY_VALUE), producer.getStringProperty(STRING_PROPERTY_NAME)); + assertEquals(String.valueOf(BYTE_PROPERTY_VALUE), producer.getStringProperty(BYTE_PROPERTY_NAME)); + assertEquals(String.valueOf(BOOLEAN_PROPERTY_VALUE), producer.getStringProperty(BOOLEAN_PROPERTY_NAME)); + assertEquals(String.valueOf(SHORT_PROPERTY_VALUE), producer.getStringProperty(SHORT_PROPERTY_NAME)); + assertEquals(String.valueOf(INTEGER_PROPERTY_VALUE), producer.getStringProperty(INTEGER_PROPERTY_NAME)); + assertEquals(String.valueOf(LONG_PROPERTY_VALUE), producer.getStringProperty(LONG_PROPERTY_NAME)); + assertEquals(String.valueOf(FLOAT_PROPERTY_VALUE), producer.getStringProperty(FLOAT_PROPERTY_NAME)); + assertEquals(String.valueOf(DOUBLE_PROPERTY_VALUE), producer.getStringProperty(DOUBLE_PROPERTY_NAME)); + } + + @Test + public void testBytePropertyConversions() { + JMSProducer producer = context.createProducer(); + producer.setProperty(STRING_PROPERTY_NAME, STRING_PROPERTY_VALUE); + producer.setProperty(BYTE_PROPERTY_NAME, BYTE_PROPERTY_VALUE); + producer.setProperty(BOOLEAN_PROPERTY_NAME, BOOLEAN_PROPERTY_VALUE); + producer.setProperty(SHORT_PROPERTY_NAME, SHORT_PROPERTY_VALUE); + producer.setProperty(INTEGER_PROPERTY_NAME, INTEGER_PROPERTY_VALUE); + producer.setProperty(LONG_PROPERTY_NAME, LONG_PROPERTY_VALUE); + producer.setProperty(FLOAT_PROPERTY_NAME, FLOAT_PROPERTY_VALUE); + producer.setProperty(DOUBLE_PROPERTY_NAME, DOUBLE_PROPERTY_VALUE); + + assertEquals(BYTE_PROPERTY_VALUE, producer.getByteProperty(BYTE_PROPERTY_NAME)); + + try { + producer.getByteProperty(STRING_PROPERTY_NAME); + fail("Should not be able to convert"); + } catch (NumberFormatException nfe) { + } + try { + producer.getByteProperty(BOOLEAN_PROPERTY_NAME); + fail("Should not be able to convert"); + } catch (MessageFormatRuntimeException mfre) { + } + try { + producer.getByteProperty(SHORT_PROPERTY_NAME); + fail("Should not be able to convert"); + } catch (MessageFormatRuntimeException mfre) { + } + try { + producer.getByteProperty(INTEGER_PROPERTY_NAME); + fail("Should not be able to convert"); + } catch (MessageFormatRuntimeException mfre) { + } + try { + producer.getByteProperty(LONG_PROPERTY_NAME); + fail("Should not be able to convert"); + } catch (MessageFormatRuntimeException mfre) { + } + try { + producer.getByteProperty(FLOAT_PROPERTY_NAME); + fail("Should not be able to convert"); + } catch (MessageFormatRuntimeException mfre) { + } + try { + producer.getByteProperty(DOUBLE_PROPERTY_NAME); + fail("Should not be able to convert"); + } catch (MessageFormatRuntimeException mfre) { + } + } + + @Test + public void testBooleanPropertyConversions() { + JMSProducer producer = context.createProducer(); + producer.setProperty(STRING_PROPERTY_NAME, STRING_PROPERTY_VALUE); + producer.setProperty(BYTE_PROPERTY_NAME, BYTE_PROPERTY_VALUE); + producer.setProperty(BOOLEAN_PROPERTY_NAME, BOOLEAN_PROPERTY_VALUE); + producer.setProperty(SHORT_PROPERTY_NAME, SHORT_PROPERTY_VALUE); + producer.setProperty(INTEGER_PROPERTY_NAME, INTEGER_PROPERTY_VALUE); + producer.setProperty(LONG_PROPERTY_NAME, LONG_PROPERTY_VALUE); + producer.setProperty(FLOAT_PROPERTY_NAME, FLOAT_PROPERTY_VALUE); + producer.setProperty(DOUBLE_PROPERTY_NAME, DOUBLE_PROPERTY_VALUE); + + assertEquals(BOOLEAN_PROPERTY_VALUE, producer.getBooleanProperty(BOOLEAN_PROPERTY_NAME)); + assertEquals(Boolean.FALSE, producer.getBooleanProperty(STRING_PROPERTY_NAME)); + + try { + producer.getBooleanProperty(BYTE_PROPERTY_NAME); + fail("Should not be able to convert"); + } catch (MessageFormatRuntimeException mfre) { + } + try { + producer.getBooleanProperty(SHORT_PROPERTY_NAME); + fail("Should not be able to convert"); + } catch (MessageFormatRuntimeException mfre) { + } + try { + producer.getBooleanProperty(INTEGER_PROPERTY_NAME); + fail("Should not be able to convert"); + } catch (MessageFormatRuntimeException mfre) { + } + try { + producer.getBooleanProperty(LONG_PROPERTY_NAME); + fail("Should not be able to convert"); + } catch (MessageFormatRuntimeException mfre) { + } + try { + producer.getBooleanProperty(FLOAT_PROPERTY_NAME); + fail("Should not be able to convert"); + } catch (MessageFormatRuntimeException mfre) { + } + try { + producer.getBooleanProperty(DOUBLE_PROPERTY_NAME); + fail("Should not be able to convert"); + } catch (MessageFormatRuntimeException mfre) { + } + } + + @Test + public void testShortPropertyConversions() { + JMSProducer producer = context.createProducer(); + producer.setProperty(STRING_PROPERTY_NAME, STRING_PROPERTY_VALUE); + producer.setProperty(BYTE_PROPERTY_NAME, BYTE_PROPERTY_VALUE); + producer.setProperty(BOOLEAN_PROPERTY_NAME, BOOLEAN_PROPERTY_VALUE); + producer.setProperty(SHORT_PROPERTY_NAME, SHORT_PROPERTY_VALUE); + producer.setProperty(INTEGER_PROPERTY_NAME, INTEGER_PROPERTY_VALUE); + producer.setProperty(LONG_PROPERTY_NAME, LONG_PROPERTY_VALUE); + producer.setProperty(FLOAT_PROPERTY_NAME, FLOAT_PROPERTY_VALUE); + producer.setProperty(DOUBLE_PROPERTY_NAME, DOUBLE_PROPERTY_VALUE); + + assertEquals(BYTE_PROPERTY_VALUE, producer.getShortProperty(BYTE_PROPERTY_NAME)); + assertEquals(SHORT_PROPERTY_VALUE, producer.getShortProperty(SHORT_PROPERTY_NAME)); + + try { + producer.getShortProperty(STRING_PROPERTY_NAME); + fail("Should not be able to convert"); + } catch (NumberFormatException nfe) { + } + try { + producer.getShortProperty(BOOLEAN_PROPERTY_NAME); + fail("Should not be able to convert"); + } catch (MessageFormatRuntimeException mfre) { + } + try { + producer.getShortProperty(INTEGER_PROPERTY_NAME); + fail("Should not be able to convert"); + } catch (MessageFormatRuntimeException mfre) { + } + try { + producer.getShortProperty(LONG_PROPERTY_NAME); + fail("Should not be able to convert"); + } catch (MessageFormatRuntimeException mfre) { + } + try { + producer.getShortProperty(FLOAT_PROPERTY_NAME); + fail("Should not be able to convert"); + } catch (MessageFormatRuntimeException mfre) { + } + try { + producer.getShortProperty(DOUBLE_PROPERTY_NAME); + fail("Should not be able to convert"); + } catch (MessageFormatRuntimeException mfre) { + } + } + + @Test + public void testIntPropertyConversions() { + JMSProducer producer = context.createProducer(); + producer.setProperty(STRING_PROPERTY_NAME, STRING_PROPERTY_VALUE); + producer.setProperty(BYTE_PROPERTY_NAME, BYTE_PROPERTY_VALUE); + producer.setProperty(BOOLEAN_PROPERTY_NAME, BOOLEAN_PROPERTY_VALUE); + producer.setProperty(SHORT_PROPERTY_NAME, SHORT_PROPERTY_VALUE); + producer.setProperty(INTEGER_PROPERTY_NAME, INTEGER_PROPERTY_VALUE); + producer.setProperty(LONG_PROPERTY_NAME, LONG_PROPERTY_VALUE); + producer.setProperty(FLOAT_PROPERTY_NAME, FLOAT_PROPERTY_VALUE); + producer.setProperty(DOUBLE_PROPERTY_NAME, DOUBLE_PROPERTY_VALUE); + + assertEquals(BYTE_PROPERTY_VALUE, producer.getIntProperty(BYTE_PROPERTY_NAME)); + assertEquals(SHORT_PROPERTY_VALUE, producer.getIntProperty(SHORT_PROPERTY_NAME)); + assertEquals(INTEGER_PROPERTY_VALUE, producer.getIntProperty(INTEGER_PROPERTY_NAME)); + + try { + producer.getIntProperty(STRING_PROPERTY_NAME); + fail("Should not be able to convert"); + } catch (NumberFormatException nfe) { + } + try { + producer.getIntProperty(BOOLEAN_PROPERTY_NAME); + fail("Should not be able to convert"); + } catch (MessageFormatRuntimeException mfre) { + } + try { + producer.getIntProperty(LONG_PROPERTY_NAME); + fail("Should not be able to convert"); + } catch (MessageFormatRuntimeException mfre) { + } + try { + producer.getIntProperty(FLOAT_PROPERTY_NAME); + fail("Should not be able to convert"); + } catch (MessageFormatRuntimeException mfre) { + } + try { + producer.getIntProperty(DOUBLE_PROPERTY_NAME); + fail("Should not be able to convert"); + } catch (MessageFormatRuntimeException mfre) { + } + } + + @Test + public void testLongPropertyConversions() { + JMSProducer producer = context.createProducer(); + producer.setProperty(STRING_PROPERTY_NAME, STRING_PROPERTY_VALUE); + producer.setProperty(BYTE_PROPERTY_NAME, BYTE_PROPERTY_VALUE); + producer.setProperty(BOOLEAN_PROPERTY_NAME, BOOLEAN_PROPERTY_VALUE); + producer.setProperty(SHORT_PROPERTY_NAME, SHORT_PROPERTY_VALUE); + producer.setProperty(INTEGER_PROPERTY_NAME, INTEGER_PROPERTY_VALUE); + producer.setProperty(LONG_PROPERTY_NAME, LONG_PROPERTY_VALUE); + producer.setProperty(FLOAT_PROPERTY_NAME, FLOAT_PROPERTY_VALUE); + producer.setProperty(DOUBLE_PROPERTY_NAME, DOUBLE_PROPERTY_VALUE); + + assertEquals(BYTE_PROPERTY_VALUE, producer.getLongProperty(BYTE_PROPERTY_NAME)); + assertEquals(SHORT_PROPERTY_VALUE, producer.getLongProperty(SHORT_PROPERTY_NAME)); + assertEquals(INTEGER_PROPERTY_VALUE, producer.getLongProperty(INTEGER_PROPERTY_NAME)); + assertEquals(LONG_PROPERTY_VALUE, producer.getLongProperty(LONG_PROPERTY_NAME)); + + try { + producer.getLongProperty(STRING_PROPERTY_NAME); + fail("Should not be able to convert"); + } catch (NumberFormatException nfe) { + } + try { + producer.getLongProperty(BOOLEAN_PROPERTY_NAME); + fail("Should not be able to convert"); + } catch (MessageFormatRuntimeException mfre) { + } + try { + producer.getLongProperty(FLOAT_PROPERTY_NAME); + fail("Should not be able to convert"); + } catch (MessageFormatRuntimeException mfre) { + } + try { + producer.getLongProperty(DOUBLE_PROPERTY_NAME); + fail("Should not be able to convert"); + } catch (MessageFormatRuntimeException mfre) { + } + } + + @Test + public void testFloatPropertyConversions() { + JMSProducer producer = context.createProducer(); + producer.setProperty(STRING_PROPERTY_NAME, STRING_PROPERTY_VALUE); + producer.setProperty(BYTE_PROPERTY_NAME, BYTE_PROPERTY_VALUE); + producer.setProperty(BOOLEAN_PROPERTY_NAME, BOOLEAN_PROPERTY_VALUE); + producer.setProperty(SHORT_PROPERTY_NAME, SHORT_PROPERTY_VALUE); + producer.setProperty(INTEGER_PROPERTY_NAME, INTEGER_PROPERTY_VALUE); + producer.setProperty(LONG_PROPERTY_NAME, LONG_PROPERTY_VALUE); + producer.setProperty(FLOAT_PROPERTY_NAME, FLOAT_PROPERTY_VALUE); + producer.setProperty(DOUBLE_PROPERTY_NAME, DOUBLE_PROPERTY_VALUE); + + assertEquals(FLOAT_PROPERTY_VALUE, producer.getFloatProperty(FLOAT_PROPERTY_NAME), 0.0f); + + try { + producer.getFloatProperty(STRING_PROPERTY_NAME); + fail("Should not be able to convert"); + } catch (NumberFormatException nfe) { + } + try { + producer.getFloatProperty(BOOLEAN_PROPERTY_NAME); + fail("Should not be able to convert"); + } catch (MessageFormatRuntimeException mfre) { + } + try { + producer.getFloatProperty(SHORT_PROPERTY_NAME); + fail("Should not be able to convert"); + } catch (MessageFormatRuntimeException mfre) { + } + try { + producer.getFloatProperty(INTEGER_PROPERTY_NAME); + fail("Should not be able to convert"); + } catch (MessageFormatRuntimeException mfre) { + } + try { + producer.getFloatProperty(LONG_PROPERTY_NAME); + fail("Should not be able to convert"); + } catch (MessageFormatRuntimeException mfre) { + } + try { + producer.getFloatProperty(BYTE_PROPERTY_NAME); + fail("Should not be able to convert"); + } catch (MessageFormatRuntimeException mfre) { + } + try { + producer.getFloatProperty(DOUBLE_PROPERTY_NAME); + fail("Should not be able to convert"); + } catch (MessageFormatRuntimeException mfre) { + } + } + + @Test + public void testDoublePropertyConversions() { + JMSProducer producer = context.createProducer(); + producer.setProperty(STRING_PROPERTY_NAME, STRING_PROPERTY_VALUE); + producer.setProperty(BYTE_PROPERTY_NAME, BYTE_PROPERTY_VALUE); + producer.setProperty(BOOLEAN_PROPERTY_NAME, BOOLEAN_PROPERTY_VALUE); + producer.setProperty(SHORT_PROPERTY_NAME, SHORT_PROPERTY_VALUE); + producer.setProperty(INTEGER_PROPERTY_NAME, INTEGER_PROPERTY_VALUE); + producer.setProperty(LONG_PROPERTY_NAME, LONG_PROPERTY_VALUE); + producer.setProperty(FLOAT_PROPERTY_NAME, FLOAT_PROPERTY_VALUE); + producer.setProperty(DOUBLE_PROPERTY_NAME, DOUBLE_PROPERTY_VALUE); + + assertEquals(DOUBLE_PROPERTY_VALUE, producer.getDoubleProperty(DOUBLE_PROPERTY_NAME), 0.0); + assertEquals(FLOAT_PROPERTY_VALUE, producer.getDoubleProperty(FLOAT_PROPERTY_NAME), 0.0); + + try { + producer.getDoubleProperty(STRING_PROPERTY_NAME); + fail("Should not be able to convert"); + } catch (NumberFormatException nfe) { + } + try { + producer.getDoubleProperty(BOOLEAN_PROPERTY_NAME); + fail("Should not be able to convert"); + } catch (MessageFormatRuntimeException mfre) { + } + try { + producer.getDoubleProperty(SHORT_PROPERTY_NAME); + fail("Should not be able to convert"); + } catch (MessageFormatRuntimeException mfre) { + } + try { + producer.getDoubleProperty(INTEGER_PROPERTY_NAME); + fail("Should not be able to convert"); + } catch (MessageFormatRuntimeException mfre) { + } + try { + producer.getDoubleProperty(LONG_PROPERTY_NAME); + fail("Should not be able to convert"); + } catch (MessageFormatRuntimeException mfre) { + } + try { + producer.getDoubleProperty(BYTE_PROPERTY_NAME); + fail("Should not be able to convert"); + } catch (MessageFormatRuntimeException mfre) { + } + } + + //----- Test for error when set called with invalid name -----------------// + + @Test public void testSetStringPropetryWithBadPropetyName() { JMSProducer producer = context.createProducer(); @@ -179,4 +722,107 @@ public class JmsProducerTest extends JmsConnectionTestSupport { fail("Should not accept invalid property name"); } catch (MessageFormatRuntimeException mfre) {} } + + //----- Tests for producer send configuration methods --------------------// + + @Test + public void testAsync() { + JMSProducer producer = context.createProducer(); + TestJmsCompletionListener listener = new TestJmsCompletionListener(); + + producer.setAsync(listener); + assertEquals(listener, producer.getAsync()); + } + + @Test + public void testDeliveryMode() { + JMSProducer producer = context.createProducer(); + + producer.setDeliveryMode(DeliveryMode.PERSISTENT); + assertEquals(DeliveryMode.PERSISTENT, producer.getDeliveryMode()); + producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); + assertEquals(DeliveryMode.NON_PERSISTENT, producer.getDeliveryMode()); + } + + @Test + public void testDeliveryDelay() { + JMSProducer producer = context.createProducer(); + + producer.setDeliveryDelay(2000); + assertEquals(2000, producer.getDeliveryDelay()); + } + + @Test + public void testDisableMessageID() { + JMSProducer producer = context.createProducer(); + + producer.setDisableMessageID(false); + assertEquals(false, producer.getDisableMessageID()); + producer.setDisableMessageID(true); + assertEquals(true, producer.getDisableMessageID()); + } + + @Test + public void testMessageDisableTimestamp() { + JMSProducer producer = context.createProducer(); + + producer.setDisableMessageTimestamp(false); + assertEquals(false, producer.getDisableMessageTimestamp()); + producer.setDisableMessageTimestamp(true); + assertEquals(true, producer.getDisableMessageTimestamp()); + } + + @Test + public void testPriority() { + JMSProducer producer = context.createProducer(); + + producer.setPriority(1); + assertEquals(1, producer.getPriority()); + producer.setPriority(4); + assertEquals(4, producer.getPriority()); + } + + @Test + public void testTimeToLive() { + JMSProducer producer = context.createProducer(); + + producer.setTimeToLive(2000); + assertEquals(2000, producer.getTimeToLive()); + } + + //----- Test Send Methods -----------------------------------------------// + + @Test + public void testSendJMSMessage() throws JMSException { + JmsSession session = Mockito.mock(JmsSession.class); + JmsMessageProducer messageProducer = Mockito.mock(JmsMessageProducer.class); + Message message = Mockito.mock(Message.class); + + JmsProducer producer = new JmsProducer(session, messageProducer); + + producer.setJMSCorrelationID(JMS_CORRELATION_ID); + producer.setJMSCorrelationIDAsBytes(JMS_CORRELATION_ID.getBytes()); + producer.setJMSReplyTo(JMS_REPLY_TO); + producer.setJMSType(JMS_TYPE_STRING); + + producer.send(JMS_DESTINATION, message); + + Mockito.verify(message).setJMSCorrelationID(JMS_CORRELATION_ID); + Mockito.verify(message).setJMSCorrelationIDAsBytes(JMS_CORRELATION_ID.getBytes()); + Mockito.verify(message).setJMSReplyTo(JMS_REPLY_TO); + Mockito.verify(message).setJMSType(JMS_TYPE_STRING); + } + + //----- Internal Support -------------------------------------------------// + + private class TestJmsCompletionListener implements CompletionListener { + + @Override + public void onCompletion(Message message) { + } + + @Override + public void onException(Message message, Exception exception) { + } + } } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
