\r
@Override\r
public int computeLength(MeterModInput message) {\r
- \r
- return MESSAGE_LENGTH;\r
+ int length = MESSAGE_LENGTH;\r
+ if (message.getBands() != null) {\r
+ length += message.getBands().size() * LENGTH_OF_METER_BANDS;\r
+ }\r
+ return length;\r
}\r
\r
@Override\r
}\r
\r
private static void encodeBands(List<Bands> bands, ByteBuf outBuffer) {\r
- for (Bands currentBand : bands) {\r
- MeterBand meterBand = currentBand.getMeterBand();\r
- writeBandCommonFields((MeterBandCommons) meterBand, outBuffer);\r
- if (meterBand instanceof MeterBandDrop) {\r
- ByteBufUtils.padBuffer(PADDING_IN_METER_BAND_DROP, outBuffer);\r
- } else if (meterBand instanceof MeterBandDscpRemark) {\r
- MeterBandDscpRemark dscpRemarkBand = (MeterBandDscpRemark) meterBand;\r
- outBuffer.writeByte(dscpRemarkBand.getPrecLevel());\r
- ByteBufUtils.padBuffer(PADDING_IN_METER_BAND_DSCP_REMARK, outBuffer);\r
- } else if (meterBand instanceof MeterBandExperimenter) {\r
- MeterBandExperimenter experimenterBand = (MeterBandExperimenter) meterBand;\r
- outBuffer.writeInt(experimenterBand.getExperimenter().intValue());\r
+ if (bands != null) {\r
+ for (Bands currentBand : bands) {\r
+ MeterBand meterBand = currentBand.getMeterBand();\r
+ writeBandCommonFields((MeterBandCommons) meterBand, outBuffer);\r
+ if (meterBand instanceof MeterBandDrop) {\r
+ ByteBufUtils.padBuffer(PADDING_IN_METER_BAND_DROP, outBuffer);\r
+ } else if (meterBand instanceof MeterBandDscpRemark) {\r
+ MeterBandDscpRemark dscpRemarkBand = (MeterBandDscpRemark) meterBand;\r
+ outBuffer.writeByte(dscpRemarkBand.getPrecLevel());\r
+ ByteBufUtils.padBuffer(PADDING_IN_METER_BAND_DSCP_REMARK, outBuffer);\r
+ } else if (meterBand instanceof MeterBandExperimenter) {\r
+ MeterBandExperimenter experimenterBand = (MeterBandExperimenter) meterBand;\r
+ outBuffer.writeInt(experimenterBand.getExperimenter().intValue());\r
+ }\r
}\r
}\r
}\r
ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();\r
HelloInputMessageFactory factory = HelloInputMessageFactory.getInstance();\r
factory.messageToBuffer(HelloMessageFactoryTest.VERSION_YET_SUPPORTED, out, message);\r
- LOGGER.info("bytebuf: " + ByteBufUtils.byteBufToHexString(out));\r
+ LOGGER.debug("bytebuf: " + ByteBufUtils.byteBufToHexString(out));\r
\r
BufferHelper.checkHeaderV13(out, factory.getMessageType(), factory.computeLength(message));\r
Elements element = readElement(out).get(0);\r
Assert.assertEquals("Wrong element type", expectedElement.get(0).getType(), element.getType());\r
- LOGGER.info(expectedElement.get(0).getVersionBitmap().toString());\r
- LOGGER.info(element.getVersionBitmap().toString());\r
+ LOGGER.debug(expectedElement.get(0).getVersionBitmap().toString());\r
+ LOGGER.debug(element.getVersionBitmap().toString());\r
Assert.assertArrayEquals("Wrong element bitmap", expectedElement.get(0).getVersionBitmap().toArray(), element.getVersionBitmap().toArray());\r
}\r
\r
}\r
\r
private static List<Boolean> readVersionBitmap(int[] input){\r
- LOGGER.info("input.length: " + input.length);\r
List<Boolean> versionBitmapList = new ArrayList<>();\r
for (int i = 0; i < input.length; i++) {\r
int mask = input[i];\r
versionBitmapList.add((mask & (1<<j)) != 0);\r
}\r
}\r
- LOGGER.info("versionbitmaplist.size: " + versionBitmapList.size());\r
return versionBitmapList;\r
}\r
\r
MeterModInputMessageFactory factory = MeterModInputMessageFactory.getInstance();\r
factory.messageToBuffer(HelloMessageFactoryTest.VERSION_YET_SUPPORTED, out, message);\r
\r
- BufferHelper.checkHeaderV13(out, factory.getMessageType(), factory.computeLength(message));\r
+ BufferHelper.checkHeaderV13(out, factory.getMessageType(), 64);\r
Assert.assertEquals("Wrong meterModCommand", message.getCommand().getIntValue(), out.readUnsignedShort());\r
Assert.assertEquals("Wrong meterFlags", message.getFlags(), decodeMeterModFlags(out.readShort()));\r
Assert.assertEquals("Wrong meterId", message.getMeterId().getValue().intValue(), out.readUnsignedInt());\r