[jboss-cvs] JBoss Messaging SVN: r5116 - in branches/Branch_Chunk_Clebert: src/main/org/jboss/messaging/core/remoting/impl/wireformat and 2 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Oct 15 15:32:45 EDT 2008
Author: clebert.suconic at jboss.com
Date: 2008-10-15 15:32:45 -0400 (Wed, 15 Oct 2008)
New Revision: 5116
Modified:
branches/Branch_Chunk_Clebert/src/main/org/jboss/messaging/core/message/impl/MessageImpl.java
branches/Branch_Chunk_Clebert/src/main/org/jboss/messaging/core/remoting/impl/wireformat/SessionSendMessage.java
branches/Branch_Chunk_Clebert/tests/src/org/jboss/messaging/tests/integration/chunkmessage/MessageChunkTest.java
branches/Branch_Chunk_Clebert/tests/src/org/jboss/messaging/tests/util/UnitTestCase.java
Log:
Fixing bug I introduce on sending regular messages
Modified: branches/Branch_Chunk_Clebert/src/main/org/jboss/messaging/core/message/impl/MessageImpl.java
===================================================================
--- branches/Branch_Chunk_Clebert/src/main/org/jboss/messaging/core/message/impl/MessageImpl.java 2008-10-15 01:10:44 UTC (rev 5115)
+++ branches/Branch_Chunk_Clebert/src/main/org/jboss/messaging/core/message/impl/MessageImpl.java 2008-10-15 19:32:45 UTC (rev 5116)
@@ -147,6 +147,7 @@
public void encode(final MessagingBuffer buffer)
{
encodeProperties(buffer);
+ buffer.putInt(getBodySize());
encodeBody(buffer);
}
@@ -188,7 +189,6 @@
public void encodeBody(MessagingBuffer buffer)
{
MessagingBuffer localBody = getBody();
- buffer.putInt(localBody.limit());
buffer.putBytes(localBody.array(), 0, localBody.limit());
}
@@ -221,10 +221,10 @@
public void decodeBody(final MessagingBuffer buffer)
{
int len = buffer.getInt();
- // TODO - this can be optimised
+ // TODO - this can be optimised
byte[] bytes = new byte[len];
buffer.getBytes(bytes);
- this.body = new ByteBufferWrapper(ByteBuffer.wrap(bytes));;
+ body = new ByteBufferWrapper(ByteBuffer.wrap(bytes));
}
public long getMessageID()
Modified: branches/Branch_Chunk_Clebert/src/main/org/jboss/messaging/core/remoting/impl/wireformat/SessionSendMessage.java
===================================================================
--- branches/Branch_Chunk_Clebert/src/main/org/jboss/messaging/core/remoting/impl/wireformat/SessionSendMessage.java 2008-10-15 01:10:44 UTC (rev 5115)
+++ branches/Branch_Chunk_Clebert/src/main/org/jboss/messaging/core/remoting/impl/wireformat/SessionSendMessage.java 2008-10-15 19:32:45 UTC (rev 5116)
@@ -140,8 +140,6 @@
serverMessage.decode(buffer);
- serverMessage.getBody().flip();
-
requiresResponse = buffer.getBoolean();
}
Modified: branches/Branch_Chunk_Clebert/tests/src/org/jboss/messaging/tests/integration/chunkmessage/MessageChunkTest.java
===================================================================
--- branches/Branch_Chunk_Clebert/tests/src/org/jboss/messaging/tests/integration/chunkmessage/MessageChunkTest.java 2008-10-15 01:10:44 UTC (rev 5115)
+++ branches/Branch_Chunk_Clebert/tests/src/org/jboss/messaging/tests/integration/chunkmessage/MessageChunkTest.java 2008-10-15 19:32:45 UTC (rev 5116)
@@ -35,8 +35,11 @@
import org.jboss.messaging.core.client.ClientSession;
import org.jboss.messaging.core.client.ClientSessionFactory;
import org.jboss.messaging.core.client.FileClientMessage;
+import org.jboss.messaging.core.logging.Logger;
import org.jboss.messaging.core.remoting.impl.ByteBufferWrapper;
import org.jboss.messaging.core.remoting.spi.MessagingBuffer;
+import org.jboss.messaging.core.server.ServerMessage;
+import org.jboss.messaging.core.server.impl.ServerMessageImpl;
import org.jboss.messaging.tests.util.ServiceTestBase;
import org.jboss.messaging.util.DataConstants;
import org.jboss.messaging.util.SimpleString;
@@ -60,6 +63,7 @@
private static final SimpleString ADDRESS = new SimpleString("SimpleAddress");
// Static --------------------------------------------------------
+ private static final Logger log = Logger.getLogger(MessageChunkTest.class);
// Constructors --------------------------------------------------
@@ -67,48 +71,51 @@
public void testMessageChunkNullPersistence() throws Exception
{
- testInternal(false, false, 5000);
+ testInternal(false, false, 5000, false);
}
public void testMessageChunkFilePersistence() throws Exception
{
- testInternal(true, false, 5000);
+ testInternal(true, false, 5000, false);
}
public void testSendfileMessage() throws Exception
{
- testInternal(true, true, 5000);
+ testInternal(true, true, 5000, false);
}
public void testSendfileMessageOnNullPersistence() throws Exception
{
- testInternal(false, true, 5000);
+ testInternal(false, true, 5000, false);
}
public void testSendfileMessageSmallMessage() throws Exception
{
- testInternal(true, true, 4);
+ testInternal(true, true, 4, false);
}
public void testSendfileMessageOnNullPersistenceSmallMessage() throws Exception
{
- testInternal(false, true, 4);
+ testInternal(false, true, 4, false);
}
public void testSendRegularMessageNullPersistence() throws Exception
{
- testInternal(false, false, 4);
+ testInternal(false, false, 4, false);
}
public void testSendRegularMessagePersistence() throws Exception
{
- testInternal(true, false, 4);
+ testInternal(true, false, 4, false);
}
- public void testInternal(final boolean realFiles, final boolean useFile, final int numberOfIntegers) throws Exception
+ public void testInternal(final boolean realFiles,
+ final boolean useFile,
+ final int numberOfIntegers,
+ final boolean sendingBlocking) throws Exception
{
clearData();
@@ -120,6 +127,13 @@
{
ClientSessionFactory sf = createInVMFactory();
+ if (sendingBlocking)
+ {
+ sf.setBlockOnNonPersistentSend(true);
+ sf.setBlockOnPersistentSend(true);
+ sf.setBlockOnAcknowledge(true);
+ }
+
ClientSession session = sf.createSession(false, true, true, false);
session.createQueue(ADDRESS, ADDRESS, null, true, false);
@@ -129,7 +143,7 @@
ByteBuffer ioBuffer = ByteBuffer.allocate(DataConstants.SIZE_INT * numberOfIntegers);
MessagingBuffer body = new ByteBufferWrapper(ioBuffer);
- for (int i = 0; i < numberOfIntegers; i++)
+ for (int i = 1; i <= numberOfIntegers; i++)
{
body.putInt(i);
}
@@ -159,11 +173,13 @@
{
message = session.createClientMessage(true);
message.setBody(body);
- assertEquals(message.getEncodeSize(), message.getPropertiesEncodeSize() + DataConstants.SIZE_INT + message.getBodySize());
+
System.out.println("encodeSize = " + message.getEncodeSize());
-
+
}
+ //validateCopy(message);
+
producer.send(message);
session.close();
@@ -190,15 +206,13 @@
session.start();
- ClientMessage message2 = consumer.receive(5000);
+ ClientMessage message2 = consumer.receive(0);
assertNotNull(message2);
System.out.println("msg on client = " + message2.getMessageID());
// printBuffer("message received : ", message2.getBody());
-
-
try
{
@@ -206,11 +220,10 @@
}
catch (AssertionFailedError e)
{
- printBuffer("Expected buffer:", body.array());
- printBuffer("Arriving buffer:", message2.getBody().array());
+ log.info("Expected buffer:" + dumbBytesHex(body.array(), 40));
+ log.info("Arriving buffer:" + dumbBytesHex(message2.getBody().array(), 40));
throw e;
}
-
session.close();
}
@@ -226,6 +239,30 @@
}
}
+ /**
+ * @param message
+ */
+ private void validateCopy(final ClientMessage message)
+ {
+ assertEquals(message.getEncodeSize(), message.getPropertiesEncodeSize() + DataConstants.SIZE_INT +
+ message.getBodySize());
+
+ message.setDestination(new SimpleString("Whatever"));
+ ByteBuffer buffOut = ByteBuffer.allocate(message.getEncodeSize());
+ MessagingBuffer buffMSG = new ByteBufferWrapper(buffOut);
+ message.encode(buffMSG);
+
+ buffMSG.rewind();
+
+ ServerMessage messageCopy = new ServerMessageImpl();
+
+ messageCopy.decode(buffMSG);
+
+ assertEqualsByteArrays(message.getBody().limit(), message.getBody().array(), messageCopy.getBody().array());
+
+ message.setDestination(null);
+ }
+
// Package protected ---------------------------------------------
// Protected -----------------------------------------------------
@@ -242,29 +279,6 @@
// Private -------------------------------------------------------
- public static void printBuffer(final String msg, final byte[] buffer)
- {
-
- int size = buffer.length;
-
- System.out.print(msg);
-
- for (int i = 0; i < size; i++)
- {
- System.out.print(String.format("%1$X", buffer[i]));
- if (i + 1 < size && (i % 40 != 0 || i == 0))
- {
- System.out.print(", ");
- }
- else
- {
- System.out.println();
- System.out.print(msg);
- }
- }
- System.out.println();
- }
-
// Inner classes -------------------------------------------------
}
Modified: branches/Branch_Chunk_Clebert/tests/src/org/jboss/messaging/tests/util/UnitTestCase.java
===================================================================
--- branches/Branch_Chunk_Clebert/tests/src/org/jboss/messaging/tests/util/UnitTestCase.java 2008-10-15 01:10:44 UTC (rev 5115)
+++ branches/Branch_Chunk_Clebert/tests/src/org/jboss/messaging/tests/util/UnitTestCase.java 2008-10-15 19:32:45 UTC (rev 5116)
@@ -87,6 +87,33 @@
return buff.toString();
}
+
+ public static String dumbBytesHex(final byte[] buffer, int bytesPerLine)
+ {
+
+ StringBuffer buff = new StringBuffer();
+
+ buff.append("[");
+
+ for (int i = 0; i < buffer.length; i++)
+ {
+ buff.append(String.format("%1$2X", buffer[i]));
+ if (i + 1 < buffer.length)
+ {
+ buff.append(", ");
+ }
+ if ((i + 1) % bytesPerLine == 0)
+ {
+ buff.append("\n ");
+ }
+ }
+ buff.append("]");
+
+ return buff.toString();
+ }
+
+
+
public static void assertEqualsByteArrays(byte[] expected, byte[] actual)
{
assertEquals(expected.length, actual.length);
More information about the jboss-cvs-commits
mailing list