import org.junit.Test;\r
import org.opendaylight.openflowjava.protocol.impl.deserialization.factories.HelloMessageFactoryTest;\r
import org.opendaylight.openflowjava.protocol.impl.util.BufferHelper;\r
+import org.opendaylight.openflowjava.protocol.impl.util.EncodeConstants;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterFlags;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterId;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterModCommand;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MeterModInput;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MeterModInputBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandDropBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandDscpRemarkBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandExperimenterBuilder;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.mod.Bands;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.mod.BandsBuilder;\r
\r
@Test\r
public void testMeterModInputMessage() throws Exception {\r
MeterModInputBuilder builder = new MeterModInputBuilder();\r
- BufferHelper.setupHeader(builder);\r
+ BufferHelper.setupHeader(builder, EncodeConstants.OF13_VERSION_ID);\r
builder.setCommand(MeterModCommand.forValue(1));\r
builder.setFlags(new MeterFlags(false, true, true, false));\r
builder.setMeterId(new MeterId(2248L));\r
MeterModInputMessageFactory factory = MeterModInputMessageFactory.getInstance();\r
factory.messageToBuffer(HelloMessageFactoryTest.VERSION_YET_SUPPORTED, out, message);\r
\r
- BufferHelper.checkHeaderV13(out, factory.getMessageType(), factory.computeLength());\r
- Assert.assertEquals("Wrong meterModCommand", message.getCommand().getIntValue(), out.readShort());\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
- Assert.assertEquals("Wrong bands", true, compareBandsLists(createBandsList(), decodeBandsList(out)));\r
+ Assert.assertEquals("Wrong bands", message.getBands(), decodeBandsList(out));\r
}\r
\r
private static MeterFlags decodeMeterModFlags(short input){\r
}\r
\r
private static List<Bands> createBandsList(){\r
- List<Bands> bandsList = new ArrayList<Bands>();\r
+ List<Bands> bandsList = new ArrayList<>();\r
BandsBuilder bandsBuilder = new BandsBuilder();\r
- Bands band;\r
- bandsBuilder.setType(MeterBandType.forValue(1));\r
- bandsBuilder.setRate(2254L);\r
- bandsBuilder.setBurstSize(12L);\r
- band = bandsBuilder.build();\r
- bandsList.add(band);\r
+ MeterBandDropBuilder dropBand = new MeterBandDropBuilder();\r
+ dropBand.setType(MeterBandType.OFPMBTDROP);\r
+ dropBand.setRate(1L);\r
+ dropBand.setBurstSize(2L);\r
+ bandsList.add(bandsBuilder.setMeterBand(dropBand.build()).build());\r
+ MeterBandDscpRemarkBuilder dscpRemarkBand = new MeterBandDscpRemarkBuilder();\r
+ dscpRemarkBand.setType(MeterBandType.OFPMBTDSCPREMARK);\r
+ dscpRemarkBand.setRate(1L);\r
+ dscpRemarkBand.setBurstSize(2L);\r
+ dscpRemarkBand.setPrecLevel((short) 3);\r
+ bandsList.add(bandsBuilder.setMeterBand(dscpRemarkBand.build()).build());\r
+ MeterBandExperimenterBuilder experimenterBand = new MeterBandExperimenterBuilder();\r
+ experimenterBand.setType(MeterBandType.OFPMBTEXPERIMENTER);\r
+ experimenterBand.setRate(1L);\r
+ experimenterBand.setBurstSize(2L);\r
+ experimenterBand.setExperimenter(4L);\r
+ bandsList.add(bandsBuilder.setMeterBand(experimenterBand.build()).build());\r
return bandsList;\r
}\r
\r
private static List<Bands> decodeBandsList(ByteBuf input){\r
- List<Bands> bandsList = new ArrayList<Bands>();\r
+ List<Bands> bandsList = new ArrayList<>();\r
BandsBuilder bandsBuilder = new BandsBuilder();\r
- Bands band;\r
- bandsBuilder.setType(MeterBandType.forValue(input.readShort()));\r
- bandsBuilder.setRate(input.readUnsignedInt());\r
- bandsBuilder.setBurstSize(input.readUnsignedInt());\r
- band = bandsBuilder.build();\r
- bandsList.add(band);\r
+ MeterBandDropBuilder dropBand = new MeterBandDropBuilder();\r
+ dropBand.setType(MeterBandType.forValue(input.readUnsignedShort()));\r
+ input.skipBytes(Short.SIZE/Byte.SIZE);\r
+ dropBand.setRate(input.readUnsignedInt());\r
+ dropBand.setBurstSize(input.readUnsignedInt());\r
+ input.skipBytes(4);\r
+ bandsList.add(bandsBuilder.setMeterBand(dropBand.build()).build());\r
+ MeterBandDscpRemarkBuilder dscpRemarkBand = new MeterBandDscpRemarkBuilder();\r
+ dscpRemarkBand.setType(MeterBandType.forValue(input.readUnsignedShort()));\r
+ input.skipBytes(Short.SIZE/Byte.SIZE);\r
+ dscpRemarkBand.setRate(input.readUnsignedInt());\r
+ dscpRemarkBand.setBurstSize(input.readUnsignedInt());\r
+ dscpRemarkBand.setPrecLevel(input.readUnsignedByte());\r
+ input.skipBytes(3);\r
+ bandsList.add(bandsBuilder.setMeterBand(dscpRemarkBand.build()).build());\r
+ MeterBandExperimenterBuilder experimenterBand = new MeterBandExperimenterBuilder();\r
+ experimenterBand.setType(MeterBandType.forValue(input.readUnsignedShort()));\r
+ input.skipBytes(Short.SIZE/Byte.SIZE);\r
+ experimenterBand.setRate(input.readUnsignedInt());\r
+ experimenterBand.setBurstSize(input.readUnsignedInt());\r
+ experimenterBand.setExperimenter(input.readUnsignedInt());\r
+ bandsList.add(bandsBuilder.setMeterBand(experimenterBand.build()).build());\r
return bandsList;\r
}\r
\r
- private static boolean compareBandsLists(List<Bands> bandsFromMessage, List<Bands> bandsFromBuffer) {\r
- boolean result = false;\r
- int bandsFromMessageLength = bandsFromMessage.size();\r
- for (int i = 0; i < bandsFromMessageLength; i++) {\r
- if (bandsFromMessage.get(i).getType().equals(bandsFromBuffer.get(i).getType())) {\r
- result = true;\r
- } else {\r
- result = false;\r
- break;\r
- }\r
- if (bandsFromMessage.get(i).getRate()\r
- .equals(bandsFromBuffer.get(i).getRate())) {\r
- result = true;\r
- } else {\r
- result = false;\r
- break;\r
- }\r
- if (bandsFromMessage.get(i).getBurstSize()\r
- .equals(bandsFromBuffer.get(i).getBurstSize())) {\r
- result = true;\r
- } else {\r
- result = false;\r
- break;\r
- }\r
- }\r
- // TODO get method for field length missing\r
- // TODO actions structure missing\r
- return result;\r
- }\r
}\r