Error code support for ErrorMessage
[openflowjava.git] / openflow-protocol-impl / src / test / java / org / opendaylight / openflowjava / protocol / impl / serialization / factories / MeterModInputMessageFactoryTest.java
index 535f30edbaa009c88302be2bed5caaae9bd5239f..16a1e1bb8bfd0af62633c75484cf55142fa7db77 100644 (file)
@@ -12,12 +12,16 @@ import junit.framework.Assert;
 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
@@ -34,7 +38,7 @@ public class MeterModInputMessageFactoryTest {
     @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
@@ -45,11 +49,11 @@ public class MeterModInputMessageFactoryTest {
         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
@@ -61,26 +65,54 @@ public class MeterModInputMessageFactoryTest {
     }\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