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", 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
}\r