[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