multipart request message updated
[openflowjava.git] / openflow-protocol-impl / src / test / java / org / opendaylight / openflowjava / protocol / impl / deserialization / factories / MultipartReplyMessageFactoryTest.java
index 470d944a9347bcc42e68ea5efda625d7281666de..fda59e66699274534ef5636b42da9cd484f539e7 100644 (file)
@@ -3,10 +3,21 @@ package org.opendaylight.openflowjava.protocol.impl.deserialization.factories;
 \r
 import io.netty.buffer.ByteBuf;\r
 \r
+import java.math.BigInteger;\r
+\r
 import org.junit.Assert;\r
 import org.junit.Test;\r
 import org.opendaylight.openflowjava.protocol.impl.util.BufferHelper;\r
+import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.FlowModFlags;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartReplyMessage;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyAggregate;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyDesc;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyFlow;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyGroup;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyPortStats;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyQueue;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyTable;\r
 \r
 /**\r
  * @author timotej.kubas\r
@@ -29,4 +40,359 @@ public class MultipartReplyMessageFactoryTest {
         //Assert.assertArrayEquals("Wrong body", new byte[]{0x01, 0x02, 0x03, 0x04}, builtByFactory.getBody());\r
     }\r
     \r
+    /**\r
+     * Testing {@link MultipartReplyMessageFactory} for correct translation into POJO\r
+     */\r
+    @Test\r
+    public void testMultipartReplyDescBody(){\r
+        final int DESC_STR_LEN = 256;\r
+        final int SERIAL_NUM_LEN = 32;\r
+        ByteBuf bb = BufferHelper.buildBuffer("00 00 00 01 00 00 00 00");\r
+        \r
+        String mfrDesc = "Manufacturer description";\r
+        byte[] mfrDescBytes = new byte[256];\r
+        mfrDescBytes = mfrDesc.getBytes();\r
+        bb.writeBytes(mfrDescBytes);\r
+        ByteBufUtils.padBuffer((DESC_STR_LEN - mfrDescBytes.length), bb);\r
+        \r
+        String hwDesc = "Hardware description";\r
+        byte[] hwDescBytes = new byte[256];\r
+        hwDescBytes = hwDesc.getBytes();\r
+        bb.writeBytes(hwDescBytes);\r
+        ByteBufUtils.padBuffer((DESC_STR_LEN - hwDescBytes.length), bb);\r
+        \r
+        String swDesc = "Software description";\r
+        byte[] swDescBytes = new byte[256];\r
+        swDescBytes = swDesc.getBytes();\r
+        bb.writeBytes(swDescBytes);\r
+        ByteBufUtils.padBuffer((DESC_STR_LEN - swDescBytes.length), bb);\r
+        \r
+        String serialNum = "SN0123456789";\r
+        byte[] serialNumBytes = new byte[32];\r
+        serialNumBytes = serialNum.getBytes();\r
+        bb.writeBytes(serialNumBytes);\r
+        ByteBufUtils.padBuffer((SERIAL_NUM_LEN - serialNumBytes.length), bb);\r
+        \r
+        String dpDesc = "switch3 in room 3120";\r
+        byte[] dpDescBytes = new byte[256];\r
+        dpDescBytes = dpDesc.getBytes();\r
+        bb.writeBytes(dpDescBytes);\r
+        ByteBufUtils.padBuffer((DESC_STR_LEN - dpDescBytes.length), bb);\r
+        \r
+        MultipartReplyMessage builtByFactory = BufferHelper.decodeV13(MultipartReplyMessageFactory.getInstance(), bb);\r
+        \r
+        BufferHelper.checkHeaderV13(builtByFactory);\r
+        Assert.assertEquals("Wrong type", 0x00, builtByFactory.getType().getIntValue());\r
+        Assert.assertEquals("Wrong flag", true, builtByFactory.getFlags().isOFPMPFREQMORE());\r
+        MultipartReplyDesc message = (MultipartReplyDesc) builtByFactory.getMultipartReplyBody();\r
+        Assert.assertEquals("Wrong mfrDesc", "Manufacturer description", message.getMfrDesc());\r
+        Assert.assertEquals("Wrong hwDesc", "Hardware description", message.getHwDesc());\r
+        Assert.assertEquals("Wrong swDesc", "Software description", message.getSwDesc());\r
+        Assert.assertEquals("Wrong serialNum", "SN0123456789", message.getSerialNum());\r
+        Assert.assertEquals("Wrong dpDesc", "switch3 in room 3120", message.getDpDesc());\r
+    }\r
+    \r
+    /**\r
+     * Testing {@link MultipartReplyMessageFactory} for correct translation into POJO\r
+     */\r
+    @Test\r
+    public void testMultipartReplyFlowBody(){\r
+        ByteBuf bb = BufferHelper.buildBuffer("00 01 00 01 00 00 00 00 "+\r
+                                              "08 "+//tableId\r
+                                              "00 "+//pad_01\r
+                                              "00 00 00 09 "+//durationSec\r
+                                              "00 00 00 07 "+//durationNsec\r
+                                              "00 0C "+//priority\r
+                                              "00 0E "+//idleTimeout\r
+                                              "00 0F "+//hardTimeout\r
+                                              "00 0B "+//flags\r
+                                              "00 00 00 00 "+//pad_02\r
+                                              "00 01 01 01 01 01 01 01 "+//cookie\r
+                                              "00 01 01 01 01 01 01 01 "+//packetCount\r
+                                              "00 01 01 01 01 01 01 01"//byteCount\r
+                                              );\r
+        \r
+        MultipartReplyMessage builtByFactory = BufferHelper.decodeV13(MultipartReplyMessageFactory.getInstance(), bb);\r
+        \r
+        BufferHelper.checkHeaderV13(builtByFactory);\r
+        Assert.assertEquals("Wrong type", 0x01, builtByFactory.getType().getIntValue());\r
+        Assert.assertEquals("Wrong flag", true, builtByFactory.getFlags().isOFPMPFREQMORE());\r
+        MultipartReplyFlow message = (MultipartReplyFlow) builtByFactory.getMultipartReplyBody();\r
+        Assert.assertEquals("Wrong tableId", 8, message.getFlowStats().get(0).getTableId().intValue());\r
+        Assert.assertEquals("Wrong durationSec", 9, message.getFlowStats().get(0).getDurationSec().intValue());\r
+        Assert.assertEquals("Wrong durationNsec", 7, message.getFlowStats().get(0).getDurationNsec().intValue());\r
+        Assert.assertEquals("Wrong priority", 12, message.getFlowStats().get(0).getPriority().intValue());\r
+        Assert.assertEquals("Wrong idleTimeOut", 14, message.getFlowStats().get(0).getIdleTimeout().intValue());\r
+        Assert.assertEquals("Wrong hardTimeOut", 15, message.getFlowStats().get(0).getHardTimeout().intValue());\r
+        Assert.assertEquals("Wrong flags", new FlowModFlags(true, false, true, false, true), \r
+                                           message.getFlowStats().get(0).getFlags());\r
+        Assert.assertEquals("Wrong cookie", \r
+                new BigInteger(new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}), \r
+                message.getFlowStats().get(0).getCookie());\r
+        Assert.assertEquals("Wrong packetCount", \r
+                new BigInteger(new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}), \r
+                message.getFlowStats().get(0).getPacketCount());\r
+        Assert.assertEquals("Wrong byteCount", \r
+                new BigInteger(new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}), \r
+                message.getFlowStats().get(0).getByteCount());\r
+    }\r
+    \r
+    /**\r
+     * Testing {@link MultipartReplyMessageFactory} for correct translation into POJO\r
+     */\r
+    @Test\r
+    public void testMultipartReplyAggregateBody(){\r
+        ByteBuf bb = BufferHelper.buildBuffer("00 02 00 01 00 00 00 00 "+\r
+                                              "00 01 01 01 01 01 01 01 "+//packetCount\r
+                                              "00 01 01 01 01 01 01 01 "+//byteCount\r
+                                              "00 00 00 08 "+//flowCount\r
+                                              "00 00 00 00"//pad\r
+                                              );\r
+        \r
+        MultipartReplyMessage builtByFactory = BufferHelper.decodeV13(MultipartReplyMessageFactory.getInstance(), bb);\r
+        \r
+        BufferHelper.checkHeaderV13(builtByFactory);\r
+        Assert.assertEquals("Wrong type", 0x02, builtByFactory.getType().getIntValue());\r
+        Assert.assertEquals("Wrong flag", true, builtByFactory.getFlags().isOFPMPFREQMORE());\r
+        MultipartReplyAggregate message = (MultipartReplyAggregate) builtByFactory.getMultipartReplyBody();\r
+        Assert.assertEquals("Wrong packetCount", \r
+                new BigInteger(new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}), \r
+                message.getPacketCount());\r
+        Assert.assertEquals("Wrong byteCount", \r
+                new BigInteger(new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}), \r
+                message.getByteCount());\r
+        Assert.assertEquals("Wrong flowCount", \r
+                8, \r
+                message.getFlowCount().intValue());\r
+    }\r
+    \r
+    /**\r
+     * Testing {@link MultipartReplyMessageFactory} for correct translation into POJO\r
+     */\r
+    @Test\r
+    public void testMultipartReplyTableBody(){\r
+        ByteBuf bb = BufferHelper.buildBuffer("00 03 00 01 00 00 00 00 "+\r
+                                              "08 "+//tableId\r
+                                              "00 00 00 "+//pad\r
+                                              "00 00 00 10 "+//activeCount\r
+                                              "00 01 01 01 01 01 01 01 "+//lookupCount\r
+                                              "00 01 01 01 01 01 01 01"//matchedCount\r
+                                              );\r
+        \r
+        MultipartReplyMessage builtByFactory = BufferHelper.decodeV13(MultipartReplyMessageFactory.getInstance(), bb);\r
+        \r
+        BufferHelper.checkHeaderV13(builtByFactory);\r
+        Assert.assertEquals("Wrong type", 0x03, builtByFactory.getType().getIntValue());\r
+        Assert.assertEquals("Wrong flag", true, builtByFactory.getFlags().isOFPMPFREQMORE());\r
+        \r
+        MultipartReplyTable message = (MultipartReplyTable) builtByFactory.getMultipartReplyBody();\r
+        Assert.assertEquals("Wrong tableId", 8, message.getTableStats().get(0).getTableId().intValue());\r
+        Assert.assertEquals("Wrong activeCount", 16, message.getTableStats().get(0).getActiveCount().longValue());\r
+        Assert.assertEquals("Wrong lookupCount", \r
+                new BigInteger(new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}), \r
+                message.getTableStats().get(0).getLookupCount());\r
+        Assert.assertEquals("Wrong matchedCount", \r
+                new BigInteger(new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}), \r
+                message.getTableStats().get(0).getMatchedCount());\r
+    }\r
+    \r
+    /**\r
+     * Testing {@link MultipartReplyMessageFactory} for correct translation into POJO\r
+     */\r
+    @Test\r
+    public void testMultipartReplyPortStatsBody(){\r
+        ByteBuf bb = BufferHelper.buildBuffer("00 04 00 01 00 00 00 00 "+\r
+                                              "00 00 00 FF "+//portNo\r
+                                              "00 00 00 00 "+//pad\r
+                                              "00 01 01 01 01 01 01 01 "+//rxPackets\r
+                                              "00 02 02 02 02 02 02 02 "+//txPackets\r
+                                              "00 02 03 02 03 02 03 02 "+//rxBytes\r
+                                              "00 02 03 02 03 02 03 02 "+//txBytes\r
+                                              "00 02 03 02 03 02 03 02 "+//rxDropped\r
+                                              "00 02 03 02 03 02 03 02 "+//txDropped\r
+                                              "00 02 03 02 03 02 03 02 "+//rxErrors\r
+                                              "00 02 03 02 03 02 03 02 "+//txErrors\r
+                                              "00 02 03 02 03 02 03 02 "+//rxFrameErr\r
+                                              "00 02 03 02 03 02 03 02 "+//rxOverErr\r
+                                              "00 02 03 02 03 02 03 02 "+//rxCrcErr\r
+                                              "00 02 03 02 03 02 03 02 "+//collisions\r
+                                              "00 00 00 02 "+//durationSec\r
+                                              "00 00 00 04"//durationNsec\r
+                                              );\r
+        \r
+        MultipartReplyMessage builtByFactory = BufferHelper.decodeV13(MultipartReplyMessageFactory.getInstance(), bb);\r
+        \r
+        BufferHelper.checkHeaderV13(builtByFactory);\r
+        Assert.assertEquals("Wrong type", 0x04, builtByFactory.getType().getIntValue());\r
+        Assert.assertEquals("Wrong flag", true, builtByFactory.getFlags().isOFPMPFREQMORE());\r
+        \r
+        MultipartReplyPortStats message = (MultipartReplyPortStats) builtByFactory.getMultipartReplyBody();\r
+        \r
+        Assert.assertEquals("Wrong portNo", 255, message.getPortStats().get(0).getPortNo().intValue());\r
+        Assert.assertEquals("Wrong rxPackets", \r
+                new BigInteger(new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}), \r
+                message.getPortStats().get(0).getRxPackets());\r
+        Assert.assertEquals("Wrong txPackets", \r
+                new BigInteger(new byte[]{0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02}), \r
+                message.getPortStats().get(0).getTxPackets());\r
+        Assert.assertEquals("Wrong rxBytes", \r
+                new BigInteger(new byte[]{0x00, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02}), \r
+                message.getPortStats().get(0).getRxBytes());\r
+        Assert.assertEquals("Wrong txBytes", \r
+                new BigInteger(new byte[]{0x00, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02}), \r
+                message.getPortStats().get(0).getTxBytes());\r
+        Assert.assertEquals("Wrong rxDropped", \r
+                new BigInteger(new byte[]{0x00, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02}), \r
+                message.getPortStats().get(0).getRxDropped());\r
+        Assert.assertEquals("Wrong txDropped", \r
+                new BigInteger(new byte[]{0x00, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02}), \r
+                message.getPortStats().get(0).getTxDropped());\r
+        Assert.assertEquals("Wrong rxErrors", \r
+                new BigInteger(new byte[]{0x00, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02}), \r
+                message.getPortStats().get(0).getRxErrors());\r
+        Assert.assertEquals("Wrong txErrors", \r
+                new BigInteger(new byte[]{0x00, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02}), \r
+                message.getPortStats().get(0).getTxErrors());\r
+        Assert.assertEquals("Wrong rxFrameErr", \r
+                new BigInteger(new byte[]{0x00, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02}), \r
+                message.getPortStats().get(0).getRxFrameErr());\r
+        Assert.assertEquals("Wrong rxOverErr", \r
+                new BigInteger(new byte[]{0x00, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02}), \r
+                message.getPortStats().get(0).getRxOverErr());\r
+        Assert.assertEquals("Wrong rxCrcErr", \r
+                new BigInteger(new byte[]{0x00, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02}), \r
+                message.getPortStats().get(0).getRxCrcErr());\r
+        Assert.assertEquals("Wrong collisions", \r
+                new BigInteger(new byte[]{0x00, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02}), \r
+                message.getPortStats().get(0).getCollisions());\r
+        Assert.assertEquals("Wrong durationSec", 2, message.getPortStats().get(0).getDurationSec().intValue());\r
+        Assert.assertEquals("Wrong durationNsec", 4, message.getPortStats().get(0).getDurationNsec().intValue());\r
+    }\r
+    \r
+    /**\r
+     * Testing {@link MultipartReplyMessageFactory} for correct translation into POJO\r
+     */\r
+    @Test\r
+    public void testMultipartReplyQueueBody(){\r
+        ByteBuf bb = BufferHelper.buildBuffer("00 05 00 01 00 00 00 00 "+\r
+                                              "00 00 00 FF "+//portNo\r
+                                              "00 00 00 10 "+//queueId\r
+                                              "00 02 03 02 03 02 03 02 "+//txBytes\r
+                                              "00 02 02 02 02 02 02 02 "+//txPackets\r
+                                              "00 02 03 02 03 02 03 02 "+//txErrors\r
+                                              "00 00 00 02 "+//durationSec\r
+                                              "00 00 00 04"//durationNsec\r
+                                              );\r
+        \r
+        MultipartReplyMessage builtByFactory = BufferHelper.decodeV13(MultipartReplyMessageFactory.getInstance(), bb);\r
+        \r
+        BufferHelper.checkHeaderV13(builtByFactory);\r
+        Assert.assertEquals("Wrong type", 0x05, builtByFactory.getType().getIntValue());\r
+        Assert.assertEquals("Wrong flag", true, builtByFactory.getFlags().isOFPMPFREQMORE());\r
+        \r
+        MultipartReplyQueue message = (MultipartReplyQueue) builtByFactory.getMultipartReplyBody();\r
+        \r
+        Assert.assertEquals("Wrong portNo", 255, message.getQueueStats().get(0).getPortNo().intValue());\r
+        Assert.assertEquals("Wrong queueId", 16, message.getQueueStats().get(0).getQueueId().intValue());\r
+        Assert.assertEquals("Wrong txBytes", \r
+                new BigInteger(new byte[]{0x00, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02}), \r
+                message.getQueueStats().get(0).getTxBytes());\r
+        Assert.assertEquals("Wrong txPackets", \r
+                new BigInteger(new byte[]{0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02}), \r
+                message.getQueueStats().get(0).getTxPackets());\r
+        Assert.assertEquals("Wrong txErrors", \r
+                new BigInteger(new byte[]{0x00, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02}), \r
+                message.getQueueStats().get(0).getTxErrors());\r
+        Assert.assertEquals("Wrong durationSec", 2, message.getQueueStats().get(0).getDurationSec().intValue());\r
+        Assert.assertEquals("Wrong durationNsec", 4, message.getQueueStats().get(0).getDurationNsec().intValue());\r
+    }\r
+    \r
+    /**\r
+     * Testing {@link MultipartReplyMessageFactory} for correct translation into POJO\r
+     */\r
+    @Test\r
+    public void testMultipartReplyGroupBody(){\r
+        ByteBuf bb = BufferHelper.buildBuffer("00 06 00 01 00 00 00 00 "+\r
+                                              "00 48 "+//length\r
+                                              "00 00 "+//pad1\r
+                                              "00 00 00 10 "+//groupId\r
+                                              "00 00 00 12 "+//refCount\r
+                                              "00 00 00 00 "+//pad2\r
+                                              "00 01 01 01 01 01 01 01 "+//packetCount\r
+                                              "00 01 01 01 01 01 01 01 "+//byteCount\r
+                                              "00 00 00 08 "+//durationSec\r
+                                              "00 00 00 09 "+//durationNsec\r
+                                              "00 01 01 01 01 01 01 01 "+//packetCountBucket\r
+                                              "00 01 01 01 01 01 01 01 "+//byteCountBucket\r
+                                              "00 02 02 02 02 02 02 02 "+//packetCountBucket_2\r
+                                              "00 02 02 02 02 02 02 02 "+//byteCountBucket_2\r
+                                              "00 48 "+//length_2\r
+                                              "00 00 "+//pad1.2\r
+                                              "00 00 00 10 "+//groupId_2\r
+                                              "00 00 00 12 "+//refCount_2\r
+                                              "00 00 00 00 "+//pad2.2\r
+                                              "00 01 01 01 01 01 01 01 "+//packetCount_2\r
+                                              "00 01 01 01 01 01 01 01 "+//byteCount_2\r
+                                              "00 00 00 08 "+//durationSec_2\r
+                                              "00 00 00 09 "+//durationNsec_2\r
+                                              "00 01 01 01 01 01 01 01 "+//packetCountBucket_1.2\r
+                                              "00 01 01 01 01 01 01 01 "+//byteCountBucket_1.2\r
+                                              "00 02 02 02 02 02 02 02 "+//packetCountBucket_2.2\r
+                                              "00 02 02 02 02 02 02 02"//byteCountBucket_2.2\r
+                                              );\r
+        \r
+        MultipartReplyMessage builtByFactory = BufferHelper.decodeV13(MultipartReplyMessageFactory.getInstance(), bb);\r
+        \r
+        BufferHelper.checkHeaderV13(builtByFactory);\r
+        Assert.assertEquals("Wrong type", 0x06, builtByFactory.getType().getIntValue());\r
+        Assert.assertEquals("Wrong flag", true, builtByFactory.getFlags().isOFPMPFREQMORE());\r
+        \r
+        MultipartReplyGroup message = (MultipartReplyGroup) builtByFactory.getMultipartReplyBody();\r
+        \r
+        Assert.assertEquals("Wrong groupId", 16, message.getGroupStats().get(0).getGroupId().intValue());\r
+        Assert.assertEquals("Wrong refCount", 18, message.getGroupStats().get(0).getRefCount().intValue());\r
+        Assert.assertEquals("Wrong packetCount", \r
+                new BigInteger(new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}), \r
+                message.getGroupStats().get(0).getPacketCount());\r
+        Assert.assertEquals("Wrong byteCount", \r
+                new BigInteger(new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}), \r
+                message.getGroupStats().get(0).getByteCount());\r
+        Assert.assertEquals("Wrong durationSec", 8, message.getGroupStats().get(0).getDurationSec().intValue());\r
+        Assert.assertEquals("Wrong durationNsec", 9, message.getGroupStats().get(0).getDurationNsec().intValue());\r
+        Assert.assertEquals("Wrong packetCountBucket", \r
+                new BigInteger(new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}), \r
+                message.getGroupStats().get(0).getBucketStats().get(0).getPacketCount());\r
+        Assert.assertEquals("Wrong byteCountBucket", \r
+                new BigInteger(new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}), \r
+                message.getGroupStats().get(0).getBucketStats().get(0).getByteCount());\r
+        Assert.assertEquals("Wrong packetCountBucket_2", \r
+                new BigInteger(new byte[]{0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02}), \r
+                message.getGroupStats().get(0).getBucketStats().get(1).getPacketCount());\r
+        Assert.assertEquals("Wrong byteCountBucket_2", \r
+                new BigInteger(new byte[]{0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02}), \r
+                message.getGroupStats().get(0).getBucketStats().get(1).getByteCount());\r
+        \r
+        Assert.assertEquals("Wrong groupId_2", 16, message.getGroupStats().get(1).getGroupId().intValue());\r
+        Assert.assertEquals("Wrong refCount_2", 18, message.getGroupStats().get(1).getRefCount().intValue());\r
+        Assert.assertEquals("Wrong packetCount_2", \r
+                new BigInteger(new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}), \r
+                message.getGroupStats().get(1).getPacketCount());\r
+        Assert.assertEquals("Wrong byteCount_2", \r
+                new BigInteger(new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}), \r
+                message.getGroupStats().get(1).getByteCount());\r
+        Assert.assertEquals("Wrong durationSec_2", 8, message.getGroupStats().get(1).getDurationSec().intValue());\r
+        Assert.assertEquals("Wrong durationNsec_2", 9, message.getGroupStats().get(1).getDurationNsec().intValue());\r
+        Assert.assertEquals("Wrong packetCountBucket_1.2", \r
+                new BigInteger(new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}), \r
+                message.getGroupStats().get(1).getBucketStats().get(0).getPacketCount());\r
+        Assert.assertEquals("Wrong byteCountBucket_1.2", \r
+                new BigInteger(new byte[]{0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}), \r
+                message.getGroupStats().get(1).getBucketStats().get(0).getByteCount());\r
+        Assert.assertEquals("Wrong packetCountBucket_2.2", \r
+                new BigInteger(new byte[]{0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02}), \r
+                message.getGroupStats().get(1).getBucketStats().get(1).getPacketCount());\r
+        Assert.assertEquals("Wrong byteCountBucket_2.2", \r
+                new BigInteger(new byte[]{0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02}), \r
+                message.getGroupStats().get(1).getBucketStats().get(1).getByteCount());\r
+    }\r
 }\r