Error code support for ErrorMessage
[openflowjava.git] / openflow-protocol-impl / src / test / java / org / opendaylight / openflowjava / protocol / impl / serialization / factories / MeterModInputMessageFactoryTest.java
index c8a5b762435a02a27cfc1be76a60e5f25859e67c..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", true, compareBandsLists(createBandsList(), decodeBandsList(out)));\r
+        Assert.assertEquals("Wrong bands", message.getBands(), decodeBandsList(out));\r
     }\r
     \r
     private static MeterFlags decodeMeterModFlags(short input){\r
@@ -61,56 +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
-    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