diff options
author | Robert Godfrey <rgodfrey@apache.org> | 2012-02-23 23:51:45 +0000 |
---|---|---|
committer | Robert Godfrey <rgodfrey@apache.org> | 2012-02-23 23:51:45 +0000 |
commit | e17250a076df317edc3c3e5d02d9ef97b54a9370 (patch) | |
tree | fcea6a45a1c2a4fb41c86a695d5bb363fe03784c | |
parent | afeb5065ec226e39bb0b6855db63952d9a1ba89c (diff) | |
download | qpid-python-e17250a076df317edc3c3e5d02d9ef97b54a9370.tar.gz |
QPID-1199 : [Java Client] Can not (actually you can) append to BytesMessage after send
Add test from JIRA to test suite showing problem no longer occurs
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1293034 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r-- | qpid/java/systests/src/main/java/org/apache/qpid/test/unit/basic/BytesMessageTest.java | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/basic/BytesMessageTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/basic/BytesMessageTest.java index 8afc3f6997..a121b39a56 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/basic/BytesMessageTest.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/basic/BytesMessageTest.java @@ -36,6 +36,7 @@ import javax.jms.Connection; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.Message; +import javax.jms.MessageConsumer; import javax.jms.MessageListener; import javax.jms.MessageNotReadableException; import javax.jms.MessageNotWriteableException; @@ -278,4 +279,46 @@ public class BytesMessageTest extends QpidBrokerTestCase implements MessageListe test._count = count; test.test(); } + + public void testModificationAfterSend() throws Exception + { + Connection connection = getConnection(); + Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); + BytesMessage jmsMsg = session.createBytesMessage(); + Destination destination = getTestQueue(); + + /* Set the constant message contents. */ + + jmsMsg.setStringProperty("foo", "test"); + + /* Pre-populate the message body buffer to the target size. */ + byte[] jmsMsgBodyBuffer = new byte[1024]; + + connection.start(); + + /* Send messages. */ + MessageProducer producer = session.createProducer(destination); + + MessageConsumer consumer = session.createConsumer(destination); + + for(int writtenMsgCount = 0; writtenMsgCount < 10; writtenMsgCount++) + { + /* Set the per send message contents. */ + jmsMsgBodyBuffer[0] = (byte) writtenMsgCount; + jmsMsg.writeBytes(jmsMsgBodyBuffer, 0, jmsMsgBodyBuffer.length); + /** Try to write a message. */ + producer.send(jmsMsg); + } + + + for(int writtenMsgCount = 0; writtenMsgCount < 10; writtenMsgCount++) + { + BytesMessage recvdMsg = (BytesMessage) consumer.receive(1000L); + assertNotNull("Expected to receive message " + writtenMsgCount + " but did not", recvdMsg); + assertEquals("Message "+writtenMsgCount+" not of expected size", (long) ((writtenMsgCount + 1)*1024), + recvdMsg.getBodyLength()); + + } + } + } |