[jboss-cvs] JBoss Messaging SVN: r3539 - in trunk: src/main/org/jboss/messaging/core/remoting/impl/mina and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Jan 7 08:29:02 EST 2008


Author: jmesnil
Date: 2008-01-07 08:29:02 -0500 (Mon, 07 Jan 2008)
New Revision: 3539

Added:
   trunk/tests/src/org/jboss/messaging/core/remoting/wireformat/test/unit/CodecAssert.java
   trunk/tests/src/org/jboss/messaging/core/remoting/wireformat/test/unit/RandomUtil.java
Modified:
   trunk/src/main/org/jboss/messaging/core/remoting/codec/AbstractPacketCodec.java
   trunk/src/main/org/jboss/messaging/core/remoting/codec/AcknowledgeDeliveriesRequestCodec.java
   trunk/src/main/org/jboss/messaging/core/remoting/codec/BrowserNextMessageBlockResponseCodec.java
   trunk/src/main/org/jboss/messaging/core/remoting/codec/GetPreparedTransactionsResponseCodec.java
   trunk/src/main/org/jboss/messaging/core/remoting/codec/GetTopologyResponseCodec.java
   trunk/src/main/org/jboss/messaging/core/remoting/codec/JMSExceptionMessageCodec.java
   trunk/src/main/org/jboss/messaging/core/remoting/codec/RecoverDeliveriesMessageCodec.java
   trunk/src/main/org/jboss/messaging/core/remoting/codec/SendTransactionMessageCodec.java
   trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MinaPacketCodec.java
   trunk/tests/src/org/jboss/messaging/core/remoting/wireformat/test/unit/PacketTypeTest.java
Log:
* in PacketTypeTest, added bytes check for encoded packet

Modified: trunk/src/main/org/jboss/messaging/core/remoting/codec/AbstractPacketCodec.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/codec/AbstractPacketCodec.java	2008-01-06 12:27:30 UTC (rev 3538)
+++ trunk/src/main/org/jboss/messaging/core/remoting/codec/AbstractPacketCodec.java	2008-01-07 13:29:02 UTC (rev 3539)
@@ -34,6 +34,10 @@
 {
    // Constants -----------------------------------------------------
 
+   public static final byte TRUE = (byte) 0;
+
+   public static final byte FALSE = (byte) 1;
+
    public static final int INT_LENGTH = 4;
 
    public static final int FLOAT_LENGTH = 4;
@@ -47,6 +51,25 @@
 
    private PacketType type;
 
+   // Static --------------------------------------------------------
+   
+   public static byte[] encodeMessage(Message message) throws Exception
+   {
+      ByteArrayOutputStream baos = new ByteArrayOutputStream();
+      message.write(new DataOutputStream(baos));
+      baos.flush();
+      return baos.toByteArray();
+   }
+
+   public static byte[] encode(JBossDestination destination)
+   throws Exception
+   {
+      ByteArrayOutputStream baos = new ByteArrayOutputStream();
+      writeDestination(new DataOutputStream(baos), destination);
+      baos.flush();
+      return baos.toByteArray();
+   }
+
    // Constructors --------------------------------------------------
 
    protected AbstractPacketCodec(PacketType type)
@@ -207,29 +230,12 @@
 
    protected abstract P decodeBody(RemotingBuffer buffer) throws Exception;
 
-   protected static byte[] encode(JBossDestination destination)
-         throws Exception
-   {
-      ByteArrayOutputStream baos = new ByteArrayOutputStream();
-      writeDestination(new DataOutputStream(baos), destination);
-      baos.flush();
-      return baos.toByteArray();
-   }
-
    protected static JBossDestination decode(byte[] b) throws Exception
    {
       ByteArrayInputStream bais = new ByteArrayInputStream(b);
       return readDestination(new DataInputStream(bais));
    }
 
-   protected static byte[] encodeMessage(Message message) throws Exception
-   {
-      ByteArrayOutputStream baos = new ByteArrayOutputStream();
-      message.write(new DataOutputStream(baos));
-      baos.flush();
-      return baos.toByteArray();
-   }
-
    protected static Message decodeMessage(byte[] b) throws Exception
    {     
       ByteArrayInputStream bais = new ByteArrayInputStream(b);

Modified: trunk/src/main/org/jboss/messaging/core/remoting/codec/AcknowledgeDeliveriesRequestCodec.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/codec/AcknowledgeDeliveriesRequestCodec.java	2008-01-06 12:27:30 UTC (rev 3538)
+++ trunk/src/main/org/jboss/messaging/core/remoting/codec/AcknowledgeDeliveriesRequestCodec.java	2008-01-07 13:29:02 UTC (rev 3539)
@@ -27,6 +27,16 @@
 
    // Static --------------------------------------------------------
 
+   public static long[] convert(List<Ack> acks)
+   {
+      long[] deliveryIDs = new long[acks.size()];
+      for (int i = 0; i < acks.size(); i++)
+      {
+         deliveryIDs[i] = acks.get(i).getDeliveryID();
+      }
+      return deliveryIDs;
+   }
+
    // Constructors --------------------------------------------------
 
    public AcknowledgeDeliveriesRequestCodec()
@@ -79,16 +89,6 @@
 
    // Private -------------------------------------------------------
 
-   private static long[] convert(List<Ack> acks)
-   {
-      long[] deliveryIDs = new long[acks.size()];
-      for (int i = 0; i < acks.size(); i++)
-      {
-         deliveryIDs[i] = acks.get(i).getDeliveryID();
-      }
-      return deliveryIDs;
-   }
-
    private List<Ack> convert(long[] deliveryIDs)
    {
       List<Ack> acks = new ArrayList<Ack>(deliveryIDs.length);

Modified: trunk/src/main/org/jboss/messaging/core/remoting/codec/BrowserNextMessageBlockResponseCodec.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/codec/BrowserNextMessageBlockResponseCodec.java	2008-01-06 12:27:30 UTC (rev 3538)
+++ trunk/src/main/org/jboss/messaging/core/remoting/codec/BrowserNextMessageBlockResponseCodec.java	2008-01-07 13:29:02 UTC (rev 3539)
@@ -28,6 +28,19 @@
 
    // Static --------------------------------------------------------
 
+   public static byte[] encode(Message[] messages) throws Exception
+   {
+      ByteArrayOutputStream baos = new ByteArrayOutputStream();
+      DataOutputStream daos = new DataOutputStream(baos);
+      
+      for (int i = 0; i < messages.length; i++)
+      {
+         Message message = messages[i];
+         message.write(daos);
+      }
+      return baos.toByteArray();
+   }
+
    // Constructors --------------------------------------------------
 
    public BrowserNextMessageBlockResponseCodec()
@@ -79,19 +92,6 @@
 
    // Private ----------------------------------------------------
 
-   private byte[] encode(Message[] messages) throws Exception
-   {
-      ByteArrayOutputStream baos = new ByteArrayOutputStream();
-      DataOutputStream daos = new DataOutputStream(baos);
-      
-      for (int i = 0; i < messages.length; i++)
-      {
-         Message message = messages[i];
-         message.write(daos);
-      }
-      return baos.toByteArray();
-   }
-
    private Message[] decode(int numOfMessages, byte[] encodedMessages) throws Exception
    {
       Message[] messages = new Message[numOfMessages];

Modified: trunk/src/main/org/jboss/messaging/core/remoting/codec/GetPreparedTransactionsResponseCodec.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/codec/GetPreparedTransactionsResponseCodec.java	2008-01-06 12:27:30 UTC (rev 3538)
+++ trunk/src/main/org/jboss/messaging/core/remoting/codec/GetPreparedTransactionsResponseCodec.java	2008-01-07 13:29:02 UTC (rev 3539)
@@ -28,6 +28,18 @@
 
    // Static --------------------------------------------------------
 
+   public static byte[] encode(MessagingXid[] xids) throws Exception
+   {
+      ByteArrayOutputStream baos = new ByteArrayOutputStream();
+      DataOutputStream dos = new DataOutputStream(baos);
+      for (int i = 0; i < xids.length; i++)
+      {
+         MessagingXid xid = xids[i];
+         xid.write(dos);
+      }
+      return baos.toByteArray();
+   }
+
    // Constructors --------------------------------------------------
 
    public GetPreparedTransactionsResponseCodec()
@@ -80,18 +92,6 @@
 
    // Private -------------------------------------------------------
 
-   private static byte[] encode(MessagingXid[] xids) throws Exception
-   {
-      ByteArrayOutputStream baos = new ByteArrayOutputStream();
-      DataOutputStream dos = new DataOutputStream(baos);
-      for (int i = 0; i < xids.length; i++)
-      {
-         MessagingXid xid = xids[i];
-         xid.write(dos);
-      }
-      return baos.toByteArray();
-   }
-
    private MessagingXid[] decode(int numOfXids, byte[] encodedXids) throws Exception
    {
       MessagingXid[] xids = new MessagingXid[numOfXids];

Modified: trunk/src/main/org/jboss/messaging/core/remoting/codec/GetTopologyResponseCodec.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/codec/GetTopologyResponseCodec.java	2008-01-06 12:27:30 UTC (rev 3538)
+++ trunk/src/main/org/jboss/messaging/core/remoting/codec/GetTopologyResponseCodec.java	2008-01-07 13:29:02 UTC (rev 3539)
@@ -28,6 +28,24 @@
 
    // Static --------------------------------------------------------
 
+   public byte[] encode(TopologyResult topology) throws Exception
+   {
+      ByteArrayOutputStream baos = new ByteArrayOutputStream();
+      DataOutputStream dos = new DataOutputStream(baos);
+      topology.write(dos);
+      return baos.toByteArray();
+   }
+
+   public TopologyResult decodeTopology(byte[] encodedTopology)
+         throws Exception
+   {
+      ByteArrayInputStream bais = new ByteArrayInputStream(encodedTopology);
+      DataInputStream dis = new DataInputStream(bais);
+      TopologyResult topology = new TopologyResult();
+      topology.read(dis);
+      return topology;
+   }
+
    // Constructors --------------------------------------------------
 
    public GetTopologyResponseCodec()
@@ -75,23 +93,5 @@
 
    // Private ----------------------------------------------------
 
-   private byte[] encode(TopologyResult topology) throws Exception
-   {
-      ByteArrayOutputStream baos = new ByteArrayOutputStream();
-      DataOutputStream dos = new DataOutputStream(baos);
-      topology.write(dos);
-      return baos.toByteArray();
-   }
-
-   private TopologyResult decodeTopology(byte[] encodedTopology)
-         throws Exception
-   {
-      ByteArrayInputStream bais = new ByteArrayInputStream(encodedTopology);
-      DataInputStream dis = new DataInputStream(bais);
-      TopologyResult topology = new TopologyResult();
-      topology.read(dis);
-      return topology;
-   }
-
    // Inner classes -------------------------------------------------
 }

Modified: trunk/src/main/org/jboss/messaging/core/remoting/codec/JMSExceptionMessageCodec.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/codec/JMSExceptionMessageCodec.java	2008-01-06 12:27:30 UTC (rev 3538)
+++ trunk/src/main/org/jboss/messaging/core/remoting/codec/JMSExceptionMessageCodec.java	2008-01-07 13:29:02 UTC (rev 3539)
@@ -8,6 +8,7 @@
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
+import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 
@@ -32,6 +33,26 @@
 
    // Static --------------------------------------------------------
 
+   public static byte[] encodeJMSException(JMSException exception)
+         throws IOException
+   {
+      ByteArrayOutputStream baos = new ByteArrayOutputStream();
+      ObjectOutputStream oos = new ObjectOutputStream(baos);
+      oos.writeObject(exception);
+
+      byte[] encodedException = baos.toByteArray();
+      return encodedException;
+   }
+
+   public static JMSException decodeJMSException(byte[] b)
+   throws IOException, ClassNotFoundException
+   {
+      ByteArrayInputStream bais = new ByteArrayInputStream(b);
+      ObjectInputStream ois = new ObjectInputStream(bais);
+      JMSException exception = (JMSException) ois.readObject();
+      return exception;
+   }
+   
    // Constructors --------------------------------------------------
 
    public JMSExceptionMessageCodec()
@@ -46,13 +67,7 @@
    @Override
    protected void encodeBody(JMSExceptionMessage message, RemotingBuffer out) throws Exception
    {
-      JMSException exception = message.getException();
-     
-      ByteArrayOutputStream baos = new ByteArrayOutputStream();
-      ObjectOutputStream oos = new ObjectOutputStream(baos);
-      oos.writeObject(exception);
-
-      byte[] encodedException = baos.toByteArray();
+      byte[] encodedException = encodeJMSException(message.getException());
       
       int bodyLength = INT_LENGTH + encodedException.length;
 
@@ -70,19 +85,16 @@
       {
          return null;
       }
-      
+
       int encodedExceptionLength = in.getInt();
       byte[] b = new byte[encodedExceptionLength];
       in.get(b);
+
+      JMSException exception = decodeJMSException(b);
       
-      ByteArrayInputStream bais = new ByteArrayInputStream(b);
-      ObjectInputStream ois = new ObjectInputStream(bais);
-      JMSException exception = (JMSException) ois.readObject();
-      
       return new JMSExceptionMessage(exception);
    }
 
-
    // Package protected ---------------------------------------------
 
    // Protected -----------------------------------------------------

Modified: trunk/src/main/org/jboss/messaging/core/remoting/codec/RecoverDeliveriesMessageCodec.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/codec/RecoverDeliveriesMessageCodec.java	2008-01-06 12:27:30 UTC (rev 3538)
+++ trunk/src/main/org/jboss/messaging/core/remoting/codec/RecoverDeliveriesMessageCodec.java	2008-01-07 13:29:02 UTC (rev 3539)
@@ -32,6 +32,19 @@
 
    // Static --------------------------------------------------------
 
+   public static byte[] encode(List<DeliveryRecovery> deliveries)
+   throws Exception
+   {
+      ByteArrayOutputStream baos = new ByteArrayOutputStream();
+      DataOutputStream dos = new DataOutputStream(baos);
+      for (DeliveryRecovery delivery : deliveries)
+      {
+         delivery.write(dos);
+      }
+      baos.flush();
+      return baos.toByteArray();
+   }
+
    // Constructors --------------------------------------------------
 
    public RecoverDeliveriesMessageCodec()
@@ -88,19 +101,6 @@
 
    // Private -------------------------------------------------------
 
-   private static byte[] encode(List<DeliveryRecovery> deliveries)
-         throws Exception
-   {
-      ByteArrayOutputStream baos = new ByteArrayOutputStream();
-      DataOutputStream dos = new DataOutputStream(baos);
-      for (DeliveryRecovery delivery : deliveries)
-      {
-         delivery.write(dos);
-      }
-      baos.flush();
-      return baos.toByteArray();
-   }
-
    private List<DeliveryRecovery> decode(int size, byte[] encodedDeliveries)
          throws Exception
    {

Modified: trunk/src/main/org/jboss/messaging/core/remoting/codec/SendTransactionMessageCodec.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/codec/SendTransactionMessageCodec.java	2008-01-06 12:27:30 UTC (rev 3538)
+++ trunk/src/main/org/jboss/messaging/core/remoting/codec/SendTransactionMessageCodec.java	2008-01-07 13:29:02 UTC (rev 3539)
@@ -27,6 +27,14 @@
 
    // Static --------------------------------------------------------
 
+   public static byte[] encodeTransactionRequest(TransactionRequest tr) throws Exception
+   {
+      ByteArrayOutputStream baos = new ByteArrayOutputStream();
+      tr.write(new DataOutputStream(baos));
+      baos.flush();
+      return baos.toByteArray();
+   }
+
    // Constructors --------------------------------------------------
 
    public SendTransactionMessageCodec()
@@ -77,14 +85,6 @@
 
    // Private ----------------------------------------------------
 
-   private static byte[] encodeTransactionRequest(TransactionRequest tr) throws Exception
-   {
-      ByteArrayOutputStream baos = new ByteArrayOutputStream();
-      tr.write(new DataOutputStream(baos));
-      baos.flush();
-      return baos.toByteArray();
-   }
-
    private static TransactionRequest decodeTransactionRequest(byte[] b) throws Exception
    {
       TransactionRequest tr = new TransactionRequest();

Modified: trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MinaPacketCodec.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MinaPacketCodec.java	2008-01-06 12:27:30 UTC (rev 3538)
+++ trunk/src/main/org/jboss/messaging/core/remoting/impl/mina/MinaPacketCodec.java	2008-01-07 13:29:02 UTC (rev 3539)
@@ -6,6 +6,9 @@
  */
 package org.jboss.messaging.core.remoting.impl.mina;
 
+import static org.jboss.messaging.core.remoting.codec.AbstractPacketCodec.FALSE;
+import static org.jboss.messaging.core.remoting.codec.AbstractPacketCodec.TRUE;
+
 import java.nio.charset.CharacterCodingException;
 import java.nio.charset.Charset;
 import java.nio.charset.CharsetDecoder;
@@ -34,10 +37,6 @@
 {
    // Constants -----------------------------------------------------
 
-   private static final byte TRUE = (byte) 0;
-
-   private static final byte FALSE = (byte) 1;
-
    // used to terminate encoded Strings
    public static final byte NULL_BYTE = (byte) 0;
 

Added: trunk/tests/src/org/jboss/messaging/core/remoting/wireformat/test/unit/CodecAssert.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/core/remoting/wireformat/test/unit/CodecAssert.java	                        (rev 0)
+++ trunk/tests/src/org/jboss/messaging/core/remoting/wireformat/test/unit/CodecAssert.java	2008-01-07 13:29:02 UTC (rev 3539)
@@ -0,0 +1,146 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.wireformat.test.unit;
+
+import java.util.List;
+
+import junit.framework.Assert;
+
+import org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate;
+import org.jboss.jms.delegate.Ack;
+import org.jboss.jms.delegate.Cancel;
+import org.jboss.jms.delegate.DeliveryRecovery;
+import org.jboss.jms.delegate.TopologyResult;
+import org.jboss.jms.tx.MessagingXid;
+
+/**
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
+ * 
+ * @version <tt>$Revision$</tt>
+ * 
+ */
+public class CodecAssert extends Assert
+{
+   // Constants -----------------------------------------------------
+
+   // Attributes ----------------------------------------------------
+
+   // Static --------------------------------------------------------
+
+   static void assertEqualsAcks(List<Ack> expected, List<Ack> actual)
+   {
+      assertEquals(expected.size(), actual.size());
+      for (int i = 0; i < expected.size(); i++)
+      {
+         assertEquals(expected.get(i).getDeliveryID(), actual.get(i)
+               .getDeliveryID());
+      }
+   }
+
+   static void assertEqualsDeliveries(List<DeliveryRecovery> expected,
+         List<DeliveryRecovery> actual)
+   {
+      assertEquals(expected.size(), actual.size());
+      for (int i = 0; i < expected.size(); i++)
+      {
+         DeliveryRecovery expectedDelivery = expected.get(i);
+         DeliveryRecovery actualDelivery = actual.get(i);
+         assertEquals(expectedDelivery.getDeliveryID(), actualDelivery
+               .getDeliveryID());
+         assertEquals(expectedDelivery.getMessageID(), actualDelivery
+               .getMessageID());
+         assertEquals(expectedDelivery.getQueueName(), actualDelivery
+               .getQueueName());
+      }
+   }
+
+   static void assertEqualsCancels(List<Cancel> expected, List<Cancel> actual)
+   {
+      assertEquals(expected.size(), actual.size());
+      for (int i = 0; i < expected.size(); i++)
+      {
+         Cancel expectedCancel = expected.get(i);
+         Cancel actualCancel = actual.get(i);
+         assertEquals(expectedCancel.getDeliveryId(), actualCancel
+               .getDeliveryId());
+         assertEquals(expectedCancel.getDeliveryCount(), actualCancel
+               .getDeliveryCount());
+         assertEquals(expectedCancel.isExpired(), actualCancel.isExpired());
+         assertEquals(expectedCancel.isReachedMaxDeliveryAttempts(),
+               actualCancel.isReachedMaxDeliveryAttempts());
+      }
+   }
+
+   static void assertSameXids(MessagingXid[] expected, MessagingXid[] actual)
+   {
+      assertEquals(expected.length, actual.length);
+      for (int i = 0; i < expected.length; i++)
+      {
+         MessagingXid expectedXid = expected[i];
+         MessagingXid actualXid = actual[i];
+         assertEqualsByteArrays(expectedXid.getBranchQualifier(), actualXid
+               .getBranchQualifier());
+         assertEquals(expectedXid.getFormatId(), actualXid.getFormatId());
+         assertEqualsByteArrays(expectedXid.getGlobalTransactionId(), actualXid
+               .getGlobalTransactionId());
+      }
+   }
+
+   static void assertEqualsByteArrays(byte[] expected, byte[] actual)
+   {
+      assertEquals(expected.length, actual.length);
+      for (int i = 0; i < expected.length; i++)
+      {
+         assertEquals("byte at index " + i, expected[i], actual[i]);
+      }
+   }
+
+   static void assertEqualsByteArrays(int length, byte[] expected, byte[] actual)
+   {
+      // we check only for the given length (the arrays might be
+      // larger)
+      assertTrue(expected.length >= length);
+      assertTrue(actual.length >= length);
+      for (int i = 0; i < length; i++)
+      {
+         assertEquals("byte at index " + i, expected[i], actual[i]);
+      }
+   }
+
+   static void assertSameTopology(TopologyResult expected, TopologyResult actual)
+   {
+      assertEquals(expected.getUniqueName(), actual.getUniqueName());
+      assertEquals(expected.getFailoverMap(), actual.getFailoverMap());
+
+      ClientConnectionFactoryDelegate[] expectedDelegates = expected
+            .getDelegates();
+      ClientConnectionFactoryDelegate[] actualDelegates = actual.getDelegates();
+
+      assertEquals(expectedDelegates.length, actualDelegates.length);
+
+      for (int i = 0; i < expectedDelegates.length; i++)
+      {
+         ClientConnectionFactoryDelegate expectedDelegate = expectedDelegates[i];
+         ClientConnectionFactoryDelegate actualDelegate = actualDelegates[i];
+
+         assertEquals(expectedDelegate.getID(), actualDelegate.getID());
+         assertEquals(expectedDelegate.getName(), actualDelegate.getName());
+      }
+   }
+
+   // Constructors --------------------------------------------------
+
+   // Public --------------------------------------------------------
+
+   // Package protected ---------------------------------------------
+
+   // Protected -----------------------------------------------------
+
+   // Private -------------------------------------------------------
+
+   // Inner classes -------------------------------------------------
+}

Modified: trunk/tests/src/org/jboss/messaging/core/remoting/wireformat/test/unit/PacketTypeTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/core/remoting/wireformat/test/unit/PacketTypeTest.java	2008-01-06 12:27:30 UTC (rev 3538)
+++ trunk/tests/src/org/jboss/messaging/core/remoting/wireformat/test/unit/PacketTypeTest.java	2008-01-07 13:29:02 UTC (rev 3539)
@@ -6,8 +6,13 @@
  */
 package org.jboss.messaging.core.remoting.wireformat.test.unit;
 
+import static org.jboss.messaging.core.remoting.codec.AbstractPacketCodec.FALSE;
+import static org.jboss.messaging.core.remoting.codec.AbstractPacketCodec.INT_LENGTH;
 import static org.jboss.messaging.core.remoting.codec.AbstractPacketCodec.LONG_LENGTH;
+import static org.jboss.messaging.core.remoting.codec.AbstractPacketCodec.TRUE;
+import static org.jboss.messaging.core.remoting.codec.AbstractPacketCodec.encodeMessage;
 import static org.jboss.messaging.core.remoting.codec.AbstractPacketCodec.sizeof;
+import static org.jboss.messaging.core.remoting.codec.SendTransactionMessageCodec.encodeTransactionRequest;
 import static org.jboss.messaging.core.remoting.impl.mina.MinaPacketCodec.NOT_NULL_STRING;
 import static org.jboss.messaging.core.remoting.impl.mina.MinaPacketCodec.NULL_BYTE;
 import static org.jboss.messaging.core.remoting.impl.mina.MinaPacketCodec.NULL_STRING;
@@ -63,14 +68,24 @@
 import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_GETTOPOLOGY;
 import static org.jboss.messaging.core.remoting.wireformat.PacketType.RESP_IDBLOCK;
 import static org.jboss.messaging.core.remoting.wireformat.PacketType.TEXT;
+import static org.jboss.messaging.core.remoting.wireformat.test.unit.CodecAssert.assertEqualsAcks;
+import static org.jboss.messaging.core.remoting.wireformat.test.unit.CodecAssert.assertEqualsByteArrays;
+import static org.jboss.messaging.core.remoting.wireformat.test.unit.CodecAssert.assertEqualsCancels;
+import static org.jboss.messaging.core.remoting.wireformat.test.unit.CodecAssert.assertEqualsDeliveries;
+import static org.jboss.messaging.core.remoting.wireformat.test.unit.CodecAssert.assertSameTopology;
+import static org.jboss.messaging.core.remoting.wireformat.test.unit.CodecAssert.assertSameXids;
+import static org.jboss.messaging.core.remoting.wireformat.test.unit.RandomUtil.randomByte;
+import static org.jboss.messaging.core.remoting.wireformat.test.unit.RandomUtil.randomBytes;
+import static org.jboss.messaging.core.remoting.wireformat.test.unit.RandomUtil.randomInt;
+import static org.jboss.messaging.core.remoting.wireformat.test.unit.RandomUtil.randomLong;
+import static org.jboss.messaging.core.remoting.wireformat.test.unit.RandomUtil.randomString;
 
 import java.io.IOException;
+import java.nio.ByteBuffer;
 import java.nio.CharBuffer;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
-import java.util.Random;
-import java.util.UUID;
 
 import javax.jms.InvalidDestinationException;
 import javax.jms.JMSException;
@@ -125,6 +140,7 @@
 import org.jboss.messaging.core.remoting.codec.IDBlockResponseCodec;
 import org.jboss.messaging.core.remoting.codec.JMSExceptionMessageCodec;
 import org.jboss.messaging.core.remoting.codec.RecoverDeliveriesMessageCodec;
+import org.jboss.messaging.core.remoting.codec.RemotingBuffer;
 import org.jboss.messaging.core.remoting.codec.SendMessageCodec;
 import org.jboss.messaging.core.remoting.codec.SendTransactionMessageCodec;
 import org.jboss.messaging.core.remoting.codec.SetClientIDMessageCodec;
@@ -198,8 +214,6 @@
 
    // Constants -----------------------------------------------------
 
-   private static final Random random = new Random(System.currentTimeMillis());
-
    // Attributes ----------------------------------------------------
 
    // Static --------------------------------------------------------
@@ -210,35 +224,81 @@
       packet.setVersion(version);
    }
 
-   private static String randomString()
+   private static ByteBuffer encode(int length, Object... args)
    {
-      return UUID.randomUUID().toString();
-   }
+      ByteBuffer buffer = ByteBuffer.allocate(length);
+      for (Object arg : args)
+      {
+         if (arg instanceof Byte)
+            buffer.put(((Byte)arg).byteValue());
+         else if (arg instanceof Boolean)
+         {
+            Boolean bool = (Boolean) arg;
+            buffer.put(bool ? TRUE : FALSE);
+         }
+         else if (arg instanceof Integer)
+            buffer.putInt(((Integer)arg).intValue());
+         else if (arg instanceof Long)
+            buffer.putLong(((Long)arg).longValue());
+         else if (arg instanceof Float)
+            buffer.putFloat(((Float)arg).floatValue());
+         else if (arg instanceof String)
+            putNullableString((String)arg, buffer);
+         else if (arg == null)
+            putNullableString(null, buffer);
+         else if (arg instanceof byte[])
+         {
+            byte[] b = (byte[])arg;
+            buffer.putInt(b.length);
+            buffer.put(b);
+         }
+         else if (arg instanceof long[])
+         {
+            long[] longs = (long[])arg;
+            for (long l : longs)
+            {
+               buffer.putLong(l);
+            }
+         }
+         else if (arg instanceof Cancel[])
+         {
+            Cancel[] cancels = (Cancel[])arg;
+            for (Cancel cancel : cancels)
+            {
+               buffer.putLong(cancel.getDeliveryId());
+               buffer.putInt(cancel.getDeliveryCount());
+               buffer.put(cancel.isExpired() ? TRUE : FALSE);
+               buffer.put(cancel.isReachedMaxDeliveryAttempts() ? TRUE : FALSE);
+            }
+         }
 
-   private static long randomLong()
-   {
-      return random.nextLong();
+         else
+         {
+            fail("no encoding defined for " + arg);
+         }
+      }
+      buffer.flip();
+      return buffer;
    }
 
-   private static int randomInt()
+   private static void putNullableString(String string, ByteBuffer buffer)
    {
-      return random.nextInt();
+      if (string == null)
+      {
+         buffer.put(NULL_STRING);
+      } else 
+      {
+         buffer.put(NOT_NULL_STRING);
+         UTF_8_ENCODER.reset();
+         UTF_8_ENCODER.encode(CharBuffer.wrap(string), buffer, true);
+         buffer.put(NULL_BYTE);
+      }
    }
 
-   private static byte randomByte()
-   {
-      return Integer.valueOf(random.nextInt()).byteValue();
-   }
-
-   private static byte[] randomBytes()
-   {
-      return randomString().getBytes();
-   }
-
    private static void checkHeader(SimpleRemotingBuffer buffer,
          AbstractPacket packet) throws Exception
    {
-      checkHeaderBytes(packet, buffer);
+      checkHeaderBytes(packet, buffer.buffer().buf());
 
       assertEquals(buffer.get(), packet.getType().byteValue());
       assertEquals(buffer.get(), packet.getVersion());
@@ -265,147 +325,42 @@
       assertEquals(bufferCallbackID, packet.getCallbackID());
    }
 
-   private static void checkHeaderBytes(AbstractPacket packet, SimpleRemotingBuffer actual)
+   private static void checkHeaderBytes(AbstractPacket packet, ByteBuffer actual)
    {
       String targetID = (packet.getTargetID().equals(NO_ID_SET)? null : packet.getTargetID());
       String callbackID = (packet.getCallbackID().equals(NO_ID_SET)? null : packet.getCallbackID());
 
-      IoBuffer expected = IoBuffer.allocate(256);
-      expected.setAutoExpand(true);
+      int headerLength = LONG_LENGTH + sizeof(targetID) + sizeof(callbackID);
+      ByteBuffer expected = ByteBuffer.allocate(1 + 1 + INT_LENGTH + headerLength);
       expected.put(packet.getType().byteValue());
       expected.put(packet.getVersion());
       
-      expected.putInt(LONG_LENGTH + sizeof(targetID) + sizeof(callbackID));
+      expected.putInt(headerLength);
       expected.putLong(packet.getCorrelationID());
-      if (targetID == null)
-      {
-         expected.put(NULL_STRING);
-      } else 
-      {
-         expected.put(NOT_NULL_STRING);
-         UTF_8_ENCODER.reset();
-         UTF_8_ENCODER.encode(CharBuffer.wrap(targetID), expected.buf(), true);
-         expected.put(NULL_BYTE);
-      }
-      if (callbackID == null)
-      {
-         expected.put(NULL_STRING);         
-      } else 
-      {
-         expected.put(NOT_NULL_STRING);
-         UTF_8_ENCODER.reset();
-         UTF_8_ENCODER.encode(CharBuffer.wrap(callbackID), expected.buf(), true);
-         expected.put(NULL_BYTE);
-      }
+      putNullableString(targetID, expected);
+      putNullableString(callbackID, expected);
       expected.flip();
 
-      assertEqualsByteArrays(expected.remaining(), expected.array(), actual.buffer().array());
+      assertEqualsByteArrays(expected.remaining(), expected.array(), actual.array());
    }
 
-   private static void assertEqualsAcks(List<Ack> expected, List<Ack> actual)
+   private static void checkBodyIsEmpty(RemotingBuffer buffer)
    {
-      assertEquals(expected.size(), actual.size());
-      for (int i = 0; i < expected.size(); i++)
-      {
-         assertEquals(expected.get(i).getDeliveryID(), actual.get(i)
-               .getDeliveryID());
-      }
+      assertEquals(0, buffer.getInt());
+      // check the buffer has been wholly read
+      assertEquals(0, buffer.remaining());
    }
 
-   private static void assertEqualsDeliveries(List<DeliveryRecovery> expected,
-         List<DeliveryRecovery> actual)
+   private static void checkBody(RemotingBuffer buffer, Object... bodyObjects)
    {
-      assertEquals(expected.size(), actual.size());
-      for (int i = 0; i < expected.size(); i++)
-      {
-         DeliveryRecovery expectedDelivery = expected.get(i);
-         DeliveryRecovery actualDelivery = actual.get(i);
-         assertEquals(expectedDelivery.getDeliveryID(), actualDelivery
-               .getDeliveryID());
-         assertEquals(expectedDelivery.getMessageID(), actualDelivery
-               .getMessageID());
-         assertEquals(expectedDelivery.getQueueName(), actualDelivery
-               .getQueueName());
-      }
+      byte[] actualBody = new byte[buffer.getInt()];
+      buffer.get(actualBody);
+      ByteBuffer expectedBody = encode(actualBody.length, bodyObjects);
+      assertEqualsByteArrays(expectedBody.array(), actualBody);
+      // check the buffer has been wholly read
+      assertEquals(0, buffer.remaining());
    }
 
-   private static void assertEqualsCancels(List<Cancel> expected,
-         List<Cancel> actual)
-   {
-      assertEquals(expected.size(), actual.size());
-      for (int i = 0; i < expected.size(); i++)
-      {
-         Cancel expectedCancel = expected.get(i);
-         Cancel actualCancel = actual.get(i);
-         assertEquals(expectedCancel.getDeliveryId(), actualCancel
-               .getDeliveryId());
-         assertEquals(expectedCancel.getDeliveryCount(), actualCancel
-               .getDeliveryCount());
-         assertEquals(expectedCancel.isExpired(), actualCancel.isExpired());
-         assertEquals(expectedCancel.isReachedMaxDeliveryAttempts(),
-               actualCancel.isReachedMaxDeliveryAttempts());
-      }
-   }
-
-   private static void assertSameXids(MessagingXid[] expected,
-         MessagingXid[] actual)
-   {
-      assertEquals(expected.length, actual.length);
-      for (int i = 0; i < expected.length; i++)
-      {
-         MessagingXid expectedXid = expected[i];
-         MessagingXid actualXid = actual[i];
-         assertEqualsByteArrays(expectedXid.getBranchQualifier(), actualXid
-               .getBranchQualifier());
-         assertEquals(expectedXid.getFormatId(), actualXid.getFormatId());
-         assertEqualsByteArrays(expectedXid.getGlobalTransactionId(), actualXid
-               .getGlobalTransactionId());
-      }
-   }
-
-   private static void assertEqualsByteArrays(byte[] expected, byte[] actual)
-   {
-      assertEquals(expected.length, actual.length);
-      for (int i = 0; i < expected.length; i++)
-      {
-         assertEquals("byte at index " + i, expected[i], actual[i]);
-      }
-   }
-   
-   private static void assertEqualsByteArrays(int length, byte[] expected, byte[] actual)
-   {
-      // we check only for the given length (the arrays might be
-      // larger)
-      assertTrue(expected.length >= length);
-      assertTrue(actual.length >= length);
-      for (int i = 0; i < length; i++)
-      {
-         assertEquals("byte at index " + i, expected[i], actual[i]);
-      }
-   }
-
-   private static void assertSameTopology(TopologyResult expected,
-         TopologyResult actual)
-   {
-      assertEquals(expected.getUniqueName(), actual.getUniqueName());
-      assertEquals(expected.getFailoverMap(), actual.getFailoverMap());
-
-      ClientConnectionFactoryDelegate[] expectedDelegates = expected
-            .getDelegates();
-      ClientConnectionFactoryDelegate[] actualDelegates = actual.getDelegates();
-
-      assertEquals(expectedDelegates.length, actualDelegates.length);
-
-      for (int i = 0; i < expectedDelegates.length; i++)
-      {
-         ClientConnectionFactoryDelegate expectedDelegate = expectedDelegates[i];
-         ClientConnectionFactoryDelegate actualDelegate = actualDelegates[i];
-
-         assertEquals(expectedDelegate.getID(), actualDelegate.getID());
-         assertEquals(expectedDelegate.getName(), actualDelegate.getName());
-      }
-   }
-
    // Constructors --------------------------------------------------
 
    // Public --------------------------------------------------------
@@ -420,13 +375,9 @@
 
       AbstractPacketCodec<AbstractPacket> codec = PacketCodecFactory
             .createCodecForEmptyPacket(NULL, NullPacket.class);
-
       SimpleRemotingBuffer buffer = encode(packet, codec);
-
       checkHeader(buffer, packet);
-      // no body
-      assertEquals(0, buffer.getInt());
-
+      checkBodyIsEmpty(buffer);
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
@@ -451,6 +402,7 @@
       AbstractPacketCodec<JMSExceptionMessage> codec = new JMSExceptionMessageCodec();
       SimpleRemotingBuffer buffer = encode(message, codec);
       checkHeader(buffer, message);
+      checkBody(buffer, JMSExceptionMessageCodec.encodeJMSException(e));
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
@@ -470,10 +422,8 @@
       AbstractPacketCodec<TextPacket> codec = new TextPacketCodec();
 
       SimpleRemotingBuffer buffer = encode(packet, codec);
-
       checkHeader(buffer, packet);
-      assertEquals(buffer.getInt(), sizeof(packet.getText()));
-      assertEquals(buffer.getNullableString(), packet.getText());
+      checkBody(buffer, packet.getText());      
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
@@ -497,9 +447,11 @@
       CreateConnectionRequest request = new CreateConnectionRequest(version,
             remotingSessionID, clientVMID, failedNodeID, username, password);
       addVersion(request);
+      
       AbstractPacketCodec<CreateConnectionRequest> codec = new ConnectionFactoryCreateConnectionRequestCodec();
       SimpleRemotingBuffer buffer = encode(request, codec);
       checkHeader(buffer, request);
+      checkBody(buffer, version, remotingSessionID, clientVMID, failedNodeID, username, password);      
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
@@ -516,21 +468,22 @@
       assertEquals(request.getUsername(), decodedRequest.getUsername());
       assertEquals(request.getPassword(), decodedRequest.getPassword());
    }
-
+   
    public void testCreateConnectionResponse() throws Exception
    {
       CreateConnectionResponse response = new CreateConnectionResponse(
-            randomString(), 1234);
+            randomString(), randomInt());
       addVersion(response);
+      
       AbstractPacketCodec<CreateConnectionResponse> codec = new ConnectionFactoryCreateConnectionResponseCodec();
       SimpleRemotingBuffer buffer = encode(response, codec);
       checkHeader(buffer, response);
+      checkBody(buffer, response.getConnectionID(), response.getServerID());
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
 
       assertTrue(decodedPacket instanceof CreateConnectionResponse);
-
       CreateConnectionResponse decodedResponse = (CreateConnectionResponse) decodedPacket;
       assertEquals(RESP_CREATECONNECTION, decodedResponse.getType());
       assertEquals(response.getConnectionID(), decodedResponse
@@ -547,7 +500,9 @@
             REQ_GETCLIENTAOPSTACK, GetClientAOPStackRequest.class);
       SimpleRemotingBuffer buffer = encode(request, codec);
       checkHeader(buffer, request);
+      checkBodyIsEmpty(buffer);
       buffer.rewind();
+      
       AbstractPacket decodedPacket = codec.decode(buffer);
 
       assertTrue(decodedPacket instanceof GetClientAOPStackRequest);
@@ -560,9 +515,11 @@
 
       GetClientAOPStackResponse response = new GetClientAOPStackResponse(stack);
       addVersion(response);
+      
       AbstractPacketCodec codec = new GetClientAOPStackResponseCodec();
       SimpleRemotingBuffer buffer = encode(response, codec);
       checkHeader(buffer, response);
+      checkBody(buffer, response.getStack());
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
@@ -582,6 +539,7 @@
             REQ_GETTOPOLOGY, GetTopologyRequest.class);
       SimpleRemotingBuffer buffer = encode(request, codec);
       checkHeader(buffer, request);
+      checkBodyIsEmpty(buffer);
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
@@ -603,9 +561,11 @@
             new HashMap());
       GetTopologyResponse response = new GetTopologyResponse(topology);
       addVersion(response);
-      AbstractPacketCodec codec = new GetTopologyResponseCodec();
+      
+      GetTopologyResponseCodec codec = new GetTopologyResponseCodec();
       SimpleRemotingBuffer buffer = encode(response, codec);
       checkHeader(buffer, response);
+      checkBody(buffer, codec.encode(response.getTopology()));
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
@@ -621,9 +581,11 @@
       UpdateCallbackMessage message = new UpdateCallbackMessage(randomString(),
             randomString(), true);
       addVersion(message);
+      
       AbstractPacketCodec codec = new UpdateCallbackMessageCodec();
       SimpleRemotingBuffer buffer = encode(message, codec);
       checkHeader(buffer, message);
+      checkBody(buffer, message.getRemotingSessionID(), message.getClientVMID(), message.isAdd());
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
@@ -642,15 +604,16 @@
    {
       CreateSessionRequest request = new CreateSessionRequest(true, 0, false);
       addVersion(request);
+      
       AbstractPacketCodec codec = new CreateSessionRequestCodec();
       SimpleRemotingBuffer buffer = encode(request, codec);
       checkHeader(buffer, request);
+      checkBody(buffer, request.isTransacted(), request.getAcknowledgementMode(), request.isXA());
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
 
       assertTrue(decodedPacket instanceof CreateSessionRequest);
-
       CreateSessionRequest decodedRequest = (CreateSessionRequest) decodedPacket;
       assertEquals(REQ_CREATESESSION, decodedRequest.getType());
       assertEquals(request.isTransacted(), decodedRequest.isTransacted());
@@ -664,15 +627,16 @@
       CreateSessionResponse response = new CreateSessionResponse(
             randomString(), 23, false);
       addVersion(response);
+      
       AbstractPacketCodec codec = new CreateSessionResponseCodec();
       SimpleRemotingBuffer buffer = encode(response, codec);
       checkHeader(buffer, response);
+      checkBody(buffer, response.getSessionID(), response.getDupsOKBatchSize(), response.isStrictTCK());
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
 
       assertTrue(decodedPacket instanceof CreateSessionResponse);
-
       CreateSessionResponse decodedResponse = (CreateSessionResponse) decodedPacket;
       assertEquals(RESP_CREATESESSION, decodedResponse.getType());
       assertEquals(response.getSessionID(), decodedResponse.getSessionID());
@@ -685,15 +649,16 @@
    {
       IDBlockRequest request = new IDBlockRequest(23);
       addVersion(request);
+      
       AbstractPacketCodec codec = new IDBlockRequestCodec();
       SimpleRemotingBuffer buffer = encode(request, codec);
       checkHeader(buffer, request);
+      checkBody(buffer, request.getSize());
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
 
       assertTrue(decodedPacket instanceof IDBlockRequest);
-
       IDBlockRequest decodedRequest = (IDBlockRequest) decodedPacket;
       assertEquals(REQ_IDBLOCK, decodedRequest.getType());
       assertEquals(request.getSize(), decodedRequest.getSize());
@@ -704,15 +669,16 @@
       IDBlockResponse response = new IDBlockResponse(randomLong(),
             randomLong() * 2);
       addVersion(response);
+      
       AbstractPacketCodec codec = new IDBlockResponseCodec();
       SimpleRemotingBuffer buffer = encode(response, codec);
       checkHeader(buffer, response);
+      checkBody(buffer, response.getLow(), response.getHigh());
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
 
       assertTrue(decodedPacket instanceof IDBlockResponse);
-
       IDBlockResponse decodedResponse = (IDBlockResponse) decodedPacket;
       assertEquals(RESP_IDBLOCK, decodedResponse.getType());
       assertEquals(response.getLow(), decodedResponse.getLow());
@@ -724,15 +690,16 @@
       SendMessage packet = new SendMessage(new MessageImpl(), true,
             randomLong());
       addVersion(packet);
+      
       AbstractPacketCodec codec = new SendMessageCodec();
       SimpleRemotingBuffer buffer = encode(packet, codec);
       checkHeader(buffer, packet);
+      checkBody(buffer, encodeMessage(packet.getMessage()), packet.checkForDuplicates(), packet.getSequence());
       buffer.rewind();
 
       AbstractPacket p = codec.decode(buffer);
 
       assertTrue(p instanceof SendMessage);
-
       SendMessage decodedPacket = (SendMessage) p;
       assertEquals(MSG_SENDMESSAGE, decodedPacket.getType());
       assertEquals(packet.checkForDuplicates(), decodedPacket
@@ -749,15 +716,18 @@
       CreateConsumerRequest request = new CreateConsumerRequest(destination,
             "color = 'red'", false, "subscription", false, false);
       addVersion(request);
+      
       AbstractPacketCodec codec = new CreateConsumerRequestCodec();
       SimpleRemotingBuffer buffer = encode(request, codec);
       checkHeader(buffer, request);
+      checkBody(buffer, AbstractPacketCodec.encode(destination), request.getSelector(),
+            request.isNoLocal(), request.getSubscriptionName(), request.isConnectionConsumer(),
+            request.isAutoFlowControl());
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
 
       assertTrue(decodedPacket instanceof CreateConsumerRequest);
-
       CreateConsumerRequest decodedRequest = (CreateConsumerRequest) decodedPacket;
       assertEquals(REQ_CREATECONSUMER, decodedRequest.getType());
       assertEquals(request.getDestination(), decodedRequest.getDestination());
@@ -776,15 +746,16 @@
       CreateDestinationRequest request = new CreateDestinationRequest(
             "testCreateDestinationRequest", false);
       addVersion(request);
+      
       AbstractPacketCodec codec = new CreateDestinationRequestCodec();
       SimpleRemotingBuffer buffer = encode(request, codec);
       checkHeader(buffer, request);
+      checkBody(buffer, request.getName(), request.isQueue());
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
 
       assertTrue(decodedPacket instanceof CreateDestinationRequest);
-
       CreateDestinationRequest decodedRequest = (CreateDestinationRequest) decodedPacket;
       assertEquals(REQ_CREATEDESTINATION, decodedRequest.getType());
       assertEquals(request.getName(), decodedRequest.getName());
@@ -798,15 +769,16 @@
       CreateDestinationResponse response = new CreateDestinationResponse(
             destination);
       addVersion(response);
+      
       AbstractPacketCodec codec = new CreateDestinationResponseCodec();
       SimpleRemotingBuffer buffer = encode(response, codec);
       checkHeader(buffer, response);
+      checkBody(buffer, AbstractPacketCodec.encode(destination));
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
 
       assertTrue(decodedPacket instanceof CreateDestinationResponse);
-
       CreateDestinationResponse decodedResponse = (CreateDestinationResponse) decodedPacket;
       assertEquals(RESP_CREATEDESTINATION, decodedResponse.getType());
       assertTrue(decodedResponse.getDestination() instanceof JBossQueue);
@@ -820,15 +792,16 @@
       CreateDestinationResponse response = new CreateDestinationResponse(
             destination);
       addVersion(response);
+      
       AbstractPacketCodec codec = new CreateDestinationResponseCodec();
       SimpleRemotingBuffer buffer = encode(response, codec);
       checkHeader(buffer, response);
+      checkBody(buffer, AbstractPacketCodec.encode(destination));
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
 
       assertTrue(decodedPacket instanceof CreateDestinationResponse);
-
       CreateDestinationResponse decodedResponse = (CreateDestinationResponse) decodedPacket;
       assertEquals(RESP_CREATEDESTINATION, decodedResponse.getType());
       assertTrue(decodedResponse.getDestination() instanceof JBossTopic);
@@ -841,15 +814,17 @@
       CreateConsumerResponse response = new CreateConsumerResponse(
             randomString(), 23, 42, randomLong());
       addVersion(response);
+      
       AbstractPacketCodec codec = new CreateConsumerResponseCodec();
       SimpleRemotingBuffer buffer = encode(response, codec);
       checkHeader(buffer, response);
+      checkBody(buffer, response.getConsumerID(), response.getBufferSize(),
+            response.getMaxDeliveries(), response.getRedeliveryDelay());
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
 
       assertTrue(decodedPacket instanceof CreateConsumerResponse);
-
       CreateConsumerResponse decodedResponse = (CreateConsumerResponse) decodedPacket;
       assertEquals(RESP_CREATECONSUMER, decodedResponse.getType());
       assertEquals(response.getBufferSize(), decodedResponse.getBufferSize());
@@ -868,6 +843,7 @@
             MSG_STARTCONNECTION, StartConnectionMessage.class);
       SimpleRemotingBuffer buffer = encode(packet, codec);
       checkHeader(buffer, packet);
+      checkBodyIsEmpty(buffer);
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
@@ -885,6 +861,7 @@
             MSG_STOPCONNECTION, StopConnectionMessage.class);
       SimpleRemotingBuffer buffer = encode(packet, codec);
       checkHeader(buffer, packet);
+      checkBodyIsEmpty(buffer);
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
@@ -900,6 +877,7 @@
       AbstractPacketCodec codec = new ChangeRateMessageCodec();
       SimpleRemotingBuffer buffer = encode(message, codec);
       checkHeader(buffer, message);
+      checkBody(buffer, message.getRate());
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
@@ -916,9 +894,12 @@
       DeliverMessage message = new DeliverMessage(msg, randomString(),
             randomLong(), 23);
       addVersion(message);
+      
       AbstractPacketCodec codec = new DeliverMessageCodec();
       SimpleRemotingBuffer buffer = encode(message, codec);
       checkHeader(buffer, message);
+      checkBody(buffer, encodeMessage(msg), message.getConsumerID(), 
+            message.getDeliveryID(), message.getDeliveryCount());
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
@@ -939,9 +920,11 @@
       AcknowledgeDeliveryRequest request = new AcknowledgeDeliveryRequest(
             randomLong());
       addVersion(request);
+      
       AbstractPacketCodec codec = new AcknowledgeDeliveryRequestCodec();
       SimpleRemotingBuffer buffer = encode(request, codec);
       checkHeader(buffer, request);
+      checkBody(buffer, request.getDeliveryID());
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
@@ -958,13 +941,14 @@
       acks.add(new DefaultAck(randomLong()));
       acks.add(new DefaultAck(randomLong()));
       acks.add(new DefaultAck(randomLong()));
-
       AcknowledgeDeliveriesMessage request = new AcknowledgeDeliveriesMessage(
             acks);
       addVersion(request);
-      AbstractPacketCodec codec = new AcknowledgeDeliveriesRequestCodec();
+      
+      AcknowledgeDeliveriesRequestCodec codec = new AcknowledgeDeliveriesRequestCodec();
       SimpleRemotingBuffer buffer = encode(request, codec);
       checkHeader(buffer, request);
+      checkBody(buffer, AcknowledgeDeliveriesRequestCodec.convert(acks));
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
@@ -980,9 +964,11 @@
       AcknowledgeDeliveryResponse response = new AcknowledgeDeliveryResponse(
             true);
       addVersion(response);
+      
       AbstractPacketCodec codec = new AcknowledgeDeliveryResponseCodec();
       SimpleRemotingBuffer buffer = encode(response, codec);
       checkHeader(buffer, response);
+      checkBody(buffer, response.isAcknowledged());
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
@@ -998,9 +984,11 @@
    {
       ClosingRequest request = new ClosingRequest(randomLong());
       addVersion(request);
+      
       AbstractPacketCodec codec = new ClosingRequestCodec();
       SimpleRemotingBuffer buffer = encode(request, codec);
       checkHeader(buffer, request);
+      checkBody(buffer, request.getSequence());
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
@@ -1013,11 +1001,13 @@
 
    public void testClosingResponse() throws Exception
    {
-      ClosingResponse response = new ClosingResponse(System.currentTimeMillis());
+      ClosingResponse response = new ClosingResponse(randomLong());
       addVersion(response);
+      
       AbstractPacketCodec codec = new ClosingResponseCodec();
       SimpleRemotingBuffer buffer = encode(response, codec);
       checkHeader(buffer, response);
+      checkBody(buffer, response.getID());
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
@@ -1037,6 +1027,7 @@
             MSG_CLOSE, CloseMessage.class);
       SimpleRemotingBuffer buffer = encode(message, codec);
       checkHeader(buffer, message);
+      checkBodyIsEmpty(buffer);
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
@@ -1049,15 +1040,16 @@
    public void testSendTransactionMessage() throws Exception
    {
       ClientTransaction tx = new ClientTransaction();
-      MessagingXid xid = new MessagingXid(randomBytes(), 23, randomBytes());
+      MessagingXid xid = new MessagingXid(randomBytes(), randomInt(), randomBytes());
       TransactionRequest tr = new TransactionRequest(
             TransactionRequest.ONE_PHASE_COMMIT_REQUEST, xid, tx);
-
       SendTransactionMessage message = new SendTransactionMessage(tr, true);
       addVersion(message);
+      
       AbstractPacketCodec codec = new SendTransactionMessageCodec();
       SimpleRemotingBuffer buffer = encode(message, codec);
       checkHeader(buffer, message);
+      checkBody(buffer, encodeTransactionRequest(tr), message.checkForDuplicates());
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
@@ -1067,10 +1059,8 @@
       assertEquals(MSG_SENDTRANSACTION, decodedMessage.getType());
       assertEquals(message.checkForDuplicates(), decodedMessage
             .checkForDuplicates());
-
       TransactionRequest expectedTxReq = message.getTransactionRequest();
       TransactionRequest actualTxReq = decodedMessage.getTransactionRequest();
-
       assertEquals(expectedTxReq.getRequestType(), actualTxReq.getRequestType());
       assertEquals(expectedTxReq.getXid(), actualTxReq.getXid());
    }
@@ -1084,6 +1074,7 @@
             REQ_GETPREPAREDTRANSACTIONS, GetPreparedTransactionsRequest.class);
       SimpleRemotingBuffer buffer = encode(request, codec);
       checkHeader(buffer, request);
+      checkBodyIsEmpty(buffer);
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
@@ -1101,9 +1092,11 @@
       GetPreparedTransactionsResponse response = new GetPreparedTransactionsResponse(
             xids);
       addVersion(response);
+      
       AbstractPacketCodec codec = new GetPreparedTransactionsResponseCodec();
       SimpleRemotingBuffer buffer = encode(response, codec);
       checkHeader(buffer, response);
+      checkBody(buffer, xids.length, GetPreparedTransactionsResponseCodec.encode(xids));
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
@@ -1123,6 +1116,7 @@
             REQ_GETCLIENTID, GetClientIDRequest.class);
       SimpleRemotingBuffer buffer = encode(request, codec);
       checkHeader(buffer, request);
+      checkBodyIsEmpty(buffer);
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
@@ -1135,9 +1129,11 @@
    {
       GetClientIDResponse response = new GetClientIDResponse(randomString());
       addVersion(response);
+      
       AbstractPacketCodec codec = new GetClientIDResponseCodec();
       SimpleRemotingBuffer buffer = encode(response, codec);
       checkHeader(buffer, response);
+      checkBody(buffer, response.getClientID());
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
@@ -1152,9 +1148,11 @@
    {
       SetClientIDMessage message = new SetClientIDMessage(randomString());
       addVersion(message);
+      
       AbstractPacketCodec codec = new SetClientIDMessageCodec();
       SimpleRemotingBuffer buffer = encode(message, codec);
       checkHeader(buffer, message);
+      checkBody(buffer, message.getClientID());
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
@@ -1174,13 +1172,15 @@
             randomString()));
       deliveries.add(new DeliveryRecovery(randomLong(), randomLong(),
             randomString()));
-
       RecoverDeliveriesMessage message = new RecoverDeliveriesMessage(
             deliveries, randomString());
       addVersion(message);
+      
       AbstractPacketCodec codec = new RecoverDeliveriesMessageCodec();
       SimpleRemotingBuffer buffer = encode(message, codec);
       checkHeader(buffer, message);
+      checkBody(buffer, deliveries.size(), RecoverDeliveriesMessageCodec.encode(deliveries),
+            message.getSessionID());
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
@@ -1195,12 +1195,14 @@
 
    public void testCancelDeliveryMessage() throws Exception
    {
-      Cancel cancel = new DefaultCancel(randomLong(), 23, true, false);
+      Cancel cancel = new DefaultCancel(randomLong(), randomInt(), true, false);
       CancelDeliveryMessage message = new CancelDeliveryMessage(cancel);
       addVersion(message);
       AbstractPacketCodec codec = new CancelDeliveryMessageCodec();
       SimpleRemotingBuffer buffer = encode(message, codec);
       checkHeader(buffer, message);
+      checkBody(buffer, cancel.getDeliveryId(), cancel.getDeliveryCount(), cancel.isExpired(),
+            cancel.isReachedMaxDeliveryAttempts());
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
@@ -1222,12 +1224,13 @@
       List<Cancel> cancels = new ArrayList<Cancel>();
       cancels.add(new DefaultCancel(randomLong(), 23, true, false));
       cancels.add(new DefaultCancel(randomLong(), 33, false, true));
-
       CancelDeliveriesMessage message = new CancelDeliveriesMessage(cancels);
       addVersion(message);
+      
       AbstractPacketCodec codec = new CancelDeliveriesMessageCodec();
       SimpleRemotingBuffer buffer = encode(message, codec);
       checkHeader(buffer, message);
+      checkBody(buffer, cancels.size(), cancels.toArray(new Cancel[cancels.size()]));
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
@@ -1245,15 +1248,16 @@
       CreateBrowserRequest request = new CreateBrowserRequest(destination,
             "color = 'red'");
       addVersion(request);
+      
       AbstractPacketCodec codec = new CreateBrowserRequestCodec();
       SimpleRemotingBuffer buffer = encode(request, codec);
       checkHeader(buffer, request);
+      checkBody(buffer, AbstractPacketCodec.encode(destination), request.getSelector());
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
 
       assertTrue(decodedPacket instanceof CreateBrowserRequest);
-
       CreateBrowserRequest decodedRequest = (CreateBrowserRequest) decodedPacket;
       assertEquals(REQ_CREATEBROWSER, decodedRequest.getType());
       assertEquals(request.getDestination(), decodedRequest.getDestination());
@@ -1264,15 +1268,16 @@
    {
       CreateBrowserResponse response = new CreateBrowserResponse(randomString());
       addVersion(response);
+      
       AbstractPacketCodec codec = new CreateBrowserResponseCodec();
       SimpleRemotingBuffer buffer = encode(response, codec);
       checkHeader(buffer, response);
+      checkBody(buffer, response.getBrowserID());
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
 
       assertTrue(decodedPacket instanceof CreateBrowserResponse);
-
       CreateBrowserResponse decodedResponse = (CreateBrowserResponse) decodedPacket;
       assertEquals(RESP_CREATEBROWSER, decodedResponse.getType());
       assertEquals(response.getBrowserID(), decodedResponse.getBrowserID());
@@ -1287,6 +1292,7 @@
             MSG_BROWSER_RESET, BrowserResetMessage.class);
       SimpleRemotingBuffer buffer = encode(message, codec);
       checkHeader(buffer, message);
+      checkBodyIsEmpty(buffer);
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
@@ -1304,6 +1310,7 @@
             REQ_BROWSER_HASNEXTMESSAGE, BrowserHasNextMessageRequest.class);
       SimpleRemotingBuffer buffer = encode(request, codec);
       checkHeader(buffer, request);
+      checkBodyIsEmpty(buffer);
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
@@ -1320,12 +1327,12 @@
       AbstractPacketCodec codec = new BrowserHasNextMessageResponseCodec();
       SimpleRemotingBuffer buffer = encode(response, codec);
       checkHeader(buffer, response);
+      checkBody(buffer, response.hasNext());
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
 
       assertTrue(decodedPacket instanceof BrowserHasNextMessageResponse);
-
       BrowserHasNextMessageResponse decodedResponse = (BrowserHasNextMessageResponse) decodedPacket;
       assertEquals(RESP_BROWSER_HASNEXTMESSAGE, decodedResponse.getType());
       assertEquals(response.hasNext(), decodedResponse.hasNext());
@@ -1340,6 +1347,7 @@
             REQ_BROWSER_NEXTMESSAGE, BrowserNextMessageRequest.class);
       SimpleRemotingBuffer buffer = encode(request, codec);
       checkHeader(buffer, request);
+      checkBodyIsEmpty(buffer);
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
@@ -1353,9 +1361,11 @@
       Message msg = new MessageImpl();
       BrowserNextMessageResponse response = new BrowserNextMessageResponse(msg);
       addVersion(response);
+      
       AbstractPacketCodec codec = new BrowserNextMessageResponseCodec();
       SimpleRemotingBuffer buffer = encode(response, codec);
       checkHeader(buffer, response);
+      checkBody(buffer, encodeMessage(msg));
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
@@ -1372,9 +1382,11 @@
       BrowserNextMessageBlockRequest request = new BrowserNextMessageBlockRequest(
             randomLong());
       addVersion(request);
+      
       AbstractPacketCodec codec = new BrowserNextMessageBlockRequestCodec();
       SimpleRemotingBuffer buffer = encode(request, codec);
       checkHeader(buffer, request);
+      checkBody(buffer, request.getMaxMessages());
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
@@ -1388,13 +1400,14 @@
    public void testBrowserNextMessageBlockResponse() throws Exception
    {
       Message[] messages = new Message[] { new MessageImpl(), new MessageImpl() };
-
       BrowserNextMessageBlockResponse response = new BrowserNextMessageBlockResponse(
             messages);
       addVersion(response);
+      
       AbstractPacketCodec codec = new BrowserNextMessageBlockResponseCodec();
       SimpleRemotingBuffer buffer = encode(response, codec);
       checkHeader(buffer, response);
+      checkBody(buffer, messages.length, BrowserNextMessageBlockResponseCodec.encode(messages));
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
@@ -1413,9 +1426,11 @@
       UnsubscribeMessage message = new UnsubscribeMessage(
             "testUnsubscribeMessage");
       addVersion(message);
+      
       AbstractPacketCodec codec = new UnsubscribeMessageCodec();
       SimpleRemotingBuffer buffer = encode(message, codec);
       checkHeader(buffer, message);
+      checkBody(buffer, message.getSubscriptionName());
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
@@ -1434,15 +1449,16 @@
       AddTemporaryDestinationMessage message = new AddTemporaryDestinationMessage(
             destination);
       addVersion(message);
+      
       AbstractPacketCodec codec = new AddTemporaryDestinationMessageCodec();
       SimpleRemotingBuffer buffer = encode(message, codec);
       checkHeader(buffer, message);
+      checkBody(buffer, AbstractPacketCodec.encode(destination));
       buffer.rewind();
 
       AbstractPacket decodedPacket = codec.decode(buffer);
 
       assertTrue(decodedPacket instanceof AddTemporaryDestinationMessage);
-
       AddTemporaryDestinationMessage decodedMessage = (AddTemporaryDestinationMessage) decodedPacket;
       assertEquals(MSG_ADDTEMPORARYDESTINATION, decodedMessage.getType());
       assertEquals(message.getDestination(), decodedMessage.getDestination());
@@ -1455,6 +1471,7 @@
       DeleteTemporaryDestinationMessage message = new DeleteTemporaryDestinationMessage(
             destination);
       addVersion(message);
+      
       AbstractPacketCodec codec = new DeleteTemporaryDestinationMessageCodec();
       SimpleRemotingBuffer buffer = encode(message, codec);
       checkHeader(buffer, message);
@@ -1463,7 +1480,6 @@
       AbstractPacket decodedPacket = codec.decode(buffer);
 
       assertTrue(decodedPacket instanceof DeleteTemporaryDestinationMessage);
-
       DeleteTemporaryDestinationMessage decodedMessage = (DeleteTemporaryDestinationMessage) decodedPacket;
       assertEquals(MSG_DELETETEMPORARYDESTINATION, decodedMessage.getType());
       assertEquals(message.getDestination(), decodedMessage.getDestination());
@@ -1517,5 +1533,4 @@
          return buffer.remaining();
       }
    }
-
 }

Added: trunk/tests/src/org/jboss/messaging/core/remoting/wireformat/test/unit/RandomUtil.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/core/remoting/wireformat/test/unit/RandomUtil.java	                        (rev 0)
+++ trunk/tests/src/org/jboss/messaging/core/remoting/wireformat/test/unit/RandomUtil.java	2008-01-07 13:29:02 UTC (rev 3539)
@@ -0,0 +1,65 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.messaging.core.remoting.wireformat.test.unit;
+
+import static java.util.UUID.randomUUID;
+
+import java.util.Random;
+
+/**
+ * @author <a href="mailto:jmesnil at redhat.com">Jeff Mesnil</a>
+ * 
+ * @version <tt>$Revision$</tt>
+ * 
+ */
+public class RandomUtil
+{
+   // Constants -----------------------------------------------------
+
+   private static final Random random = new Random(System.currentTimeMillis());
+
+   // Attributes ----------------------------------------------------
+
+   // Static --------------------------------------------------------
+
+   static String randomString()
+   {
+      return randomUUID().toString();
+   }
+
+   static long randomLong()
+   {
+      return random.nextLong();
+   }
+
+   static int randomInt()
+   {
+      return random.nextInt();
+   }
+
+   static byte randomByte()
+   {
+      return Integer.valueOf(random.nextInt()).byteValue();
+   }
+
+   static byte[] randomBytes()
+   {
+      return randomString().getBytes();
+   }
+
+   // Constructors --------------------------------------------------
+
+   // Public --------------------------------------------------------
+
+   // Package protected ---------------------------------------------
+
+   // Protected -----------------------------------------------------
+
+   // Private -------------------------------------------------------
+
+   // Inner classes -------------------------------------------------
+}




More information about the jboss-cvs-commits mailing list