Update MRI projects for Aluminium
[openflowplugin.git] / openflowplugin / src / test / java / org / opendaylight / openflowplugin / openflow / md / core / sal / convertor / MeterConvertorTest.java
index 6edaf42c04ef8a73db67ce6031763c751cf7620c..f35904150be9abe85f98332e7ac3291aa250cf59 100644 (file)
@@ -1,4 +1,4 @@
-/**
+/*
  * Copyright (c) 2014 Ericsson India Global Services Pvt Ltd. and others.  All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -13,10 +13,14 @@ import static org.junit.Assert.assertTrue;
 
 import java.util.ArrayList;
 import java.util.List;
-
+import java.util.Optional;
+import org.junit.Before;
 import org.junit.Test;
+import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionConvertorData;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.AddMeterInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.AddMeterInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.BandId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.Meter;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterBandType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterFlags;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.Drop;
@@ -29,6 +33,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.MeterBandHeadersBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.meter.band.headers.MeterBandHeader;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.meter.band.headers.MeterBandHeaderBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.meter.band.headers.MeterBandHeaderKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.meter.band.headers.meter.band.header.MeterBandTypesBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev150225.ExperimenterIdMeterBand;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterModCommand;
@@ -38,71 +43,82 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandDscpRemarkCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandExperimenterCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.mod.Bands;
+import org.opendaylight.yangtools.yang.common.Uint32;
+import org.opendaylight.yangtools.yang.common.Uint8;
 
 public class MeterConvertorTest {
+    private ConvertorManager convertorManager;
 
-
+    @Before
+    public void setUp() {
+        convertorManager = ConvertorManagerFactory.createDefaultManager();
+    }
 
     @Test
     public void testMeterModCommandConvertorwithAllParameters() {
+        final Uint32 burstSize = Uint32.valueOf(10L);
+        final Uint32  dropRate = Uint32.valueOf(20L);
 
-        long BURST_SIZE = 10L;
-        long DROP_RATE = 20L;
         // / DROP Band
-        MeterBandHeaderBuilder meterBandHeaderBuilder = new MeterBandHeaderBuilder();
         MeterBandTypesBuilder meterBandTypesB = new MeterBandTypesBuilder();
 
         MeterBandType bandFlag = new MeterBandType(true, false, false);
         meterBandTypesB.setFlags(bandFlag);// _ofpmbtDrop
         DropBuilder drop = new DropBuilder();
-        drop.setDropBurstSize(BURST_SIZE);
-        drop.setDropRate(DROP_RATE);
+        drop.setDropBurstSize(burstSize);
+        drop.setDropRate(dropRate);
         Drop drp = drop.build();
+        MeterBandHeaderBuilder meterBandHeaderBuilder = new MeterBandHeaderBuilder();
         meterBandHeaderBuilder.setBandType(drp);
         meterBandHeaderBuilder.setMeterBandTypes(meterBandTypesB.build());
+        meterBandHeaderBuilder.withKey(new MeterBandHeaderKey(new BandId(Uint32.ZERO)));
 
-        MeterBandHeader meterBH = meterBandHeaderBuilder.build();
+        final MeterBandHeader meterBH = meterBandHeaderBuilder.build();
 
         // DSCP Mark
-        long DSCP_REMARK_BURST_SIZE = 11L;
-        long DSCP_REMARK_RATE = 21L;
-        short DSCP_PERC_LEVEL = 1;
+        final Uint32 dscpRemarkBurstSize = Uint32.valueOf(11L);
+        final Uint32 dscpRemarkRate = Uint32.valueOf(21L);
+        final Uint8 dscpPercLevel = Uint8.valueOf(1);
 
-        MeterBandHeaderBuilder meterBandHeaderBuilder1 = new MeterBandHeaderBuilder();
         MeterBandTypesBuilder meterBandTypesB1 = new MeterBandTypesBuilder();
         MeterBandType bandFlag1 = new MeterBandType(false, true, false);
 
         meterBandTypesB1.setFlags(bandFlag1);
         DscpRemarkBuilder dscp = new DscpRemarkBuilder();
-        dscp.setDscpRemarkBurstSize(DSCP_REMARK_BURST_SIZE);
-        dscp.setDscpRemarkRate(DSCP_REMARK_RATE);
-        dscp.setPrecLevel(DSCP_PERC_LEVEL);
+        dscp.setDscpRemarkBurstSize(dscpRemarkBurstSize);
+        dscp.setDscpRemarkRate(dscpRemarkRate);
+        dscp.setPrecLevel(dscpPercLevel);
         DscpRemark dscpRemark = dscp.build();
+
+        MeterBandHeaderBuilder meterBandHeaderBuilder1 = new MeterBandHeaderBuilder();
         meterBandHeaderBuilder1.setBandType(dscpRemark);
         meterBandHeaderBuilder1.setMeterBandTypes(meterBandTypesB1.build());
+        meterBandHeaderBuilder1.withKey(new MeterBandHeaderKey(new BandId(Uint32.ONE)));
 
-        MeterBandHeader meterBH1 = meterBandHeaderBuilder1.build();
+        final MeterBandHeader meterBH1 = meterBandHeaderBuilder1.build();
 
         // Experimental
-        long EXP_BURST_SIZE = 12L;
-        long EXP_RATE = 22L;
-        long EXP_EXPERIMENTER = 23L;
+        final Uint32 expBurstSize = Uint32.valueOf(12L);
+        final Uint32 expRate = Uint32.valueOf(22L);
+        final Uint32 expExperimenter = Uint32.valueOf(23L);
 
-        MeterBandHeaderBuilder meterBandHeaderBuilder2 = new MeterBandHeaderBuilder();
         MeterBandTypesBuilder meterBandTypesB2 = new MeterBandTypesBuilder();
         MeterBandType bandFlag2 = new MeterBandType(false, false, true);
         meterBandTypesB2.setFlags(bandFlag2);
 
         ExperimenterBuilder exp = new ExperimenterBuilder();
-        exp.setExperimenterBurstSize(EXP_BURST_SIZE);
-        exp.setExperimenterRate(EXP_RATE);
-        exp.setExperimenter(EXP_EXPERIMENTER);
+        exp.setExperimenterBurstSize(expBurstSize);
+        exp.setExperimenterRate(expRate);
+        exp.setExperimenter(expExperimenter);
         Experimenter experimenter = exp.build();
+
+        MeterBandHeaderBuilder meterBandHeaderBuilder2 = new MeterBandHeaderBuilder();
         meterBandHeaderBuilder2.setBandType(experimenter);
         meterBandHeaderBuilder2.setMeterBandTypes(meterBandTypesB2.build());
+        meterBandHeaderBuilder.withKey(new MeterBandHeaderKey(new BandId(Uint32.TWO)));
         MeterBandHeader meterBH2 = meterBandHeaderBuilder2.build();
 
-        List<MeterBandHeader> meterBandList = new ArrayList<MeterBandHeader>();
+        List<MeterBandHeader> meterBandList = new ArrayList<>();
         meterBandList.add(0, meterBH);
         meterBandList.add(1, meterBH1);
         meterBandList.add(2, meterBH2);
@@ -116,9 +132,6 @@ public class MeterConvertorTest {
         AddMeterInputBuilder addMeterFromSAL = new AddMeterInputBuilder();
 
         addMeterFromSAL.setMeterBandHeaders(meterBandHeaders); // MeterBands
-                                                               // added to the
-                                                               // meter command.
-        Long temp = 10L;
 
         // NodeKey key = new NodeKey(new NodeId("24"));
         // InstanceIdentifier<Node> path =
@@ -131,111 +144,117 @@ public class MeterConvertorTest {
         addMeterFromSAL.setFlags(flagV);
 
         AddMeterInput meterInputCommand = addMeterFromSAL.build();
-        MeterModInputBuilder outMeterModInput = MeterConvertor.toMeterModInput(meterInputCommand, (short) 0X4);
+        MeterModInputBuilder outMeterModInput = convert(meterInputCommand, new VersionConvertorData((short) 0X4));
 
         assertEquals(MeterModCommand.OFPMCADD, outMeterModInput.getCommand());
         assertTrue(outMeterModInput.getFlags().isOFPMFBURST());
-        assertEquals(temp, outMeterModInput.getMeterId().getValue());
+        assertEquals(Uint32.valueOf(10L), outMeterModInput.getMeterId().getValue());
         // BandInformation starts here:
 
         List<Bands> bands = outMeterModInput.getBands();
         for (Bands currentBand : bands) {
             MeterBand meterBand = currentBand.getMeterBand();
             if (meterBand instanceof MeterBandDropCase) {
-
-                assertEquals(
-                        org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType.OFPMBTDROP,
-                        ((MeterBandDropCase) meterBand).getMeterBandDrop().getType());
-                assertEquals(BURST_SIZE, (long) ((MeterBandDropCase) meterBand).getMeterBandDrop().getBurstSize());
-                assertEquals(DROP_RATE, (long) ((MeterBandDropCase) meterBand).getMeterBandDrop().getRate());
+                assertEquals(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731
+                    .MeterBandType.OFPMBTDROP, ((MeterBandDropCase) meterBand).getMeterBandDrop().getType());
+                assertEquals(burstSize, ((MeterBandDropCase) meterBand).getMeterBandDrop().getBurstSize());
+                assertEquals(dropRate, ((MeterBandDropCase) meterBand).getMeterBandDrop().getRate());
 
             }
             if (meterBand instanceof MeterBandDscpRemarkCase) {
-                assertEquals(
-                        org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType.OFPMBTDSCPREMARK,
-                        ((MeterBandDscpRemarkCase) meterBand).getMeterBandDscpRemark().getType());
-                assertEquals(DSCP_REMARK_BURST_SIZE, (long) ((MeterBandDscpRemarkCase) meterBand).getMeterBandDscpRemark().getBurstSize());
-                assertEquals(DSCP_REMARK_RATE, (long) ((MeterBandDscpRemarkCase) meterBand).getMeterBandDscpRemark().getRate());
-                assertEquals(DSCP_PERC_LEVEL, (short) ((MeterBandDscpRemarkCase) meterBand).getMeterBandDscpRemark().getPrecLevel());
+                assertEquals(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731
+                    .MeterBandType.OFPMBTDSCPREMARK,
+                    ((MeterBandDscpRemarkCase) meterBand).getMeterBandDscpRemark().getType());
+                assertEquals(dscpRemarkBurstSize,
+                        ((MeterBandDscpRemarkCase) meterBand).getMeterBandDscpRemark().getBurstSize());
+                assertEquals(dscpRemarkRate,
+                        ((MeterBandDscpRemarkCase) meterBand).getMeterBandDscpRemark().getRate());
+                assertEquals(dscpPercLevel,
+                        ((MeterBandDscpRemarkCase) meterBand).getMeterBandDscpRemark().getPrecLevel());
 
             }
             if (meterBand instanceof MeterBandExperimenterCase) {
-                assertEquals(
-                        org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType.OFPMBTEXPERIMENTER,
-                        ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter().getType());
-                assertEquals(EXP_BURST_SIZE, (long) ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter().getBurstSize());
-                assertEquals(EXP_RATE, (long) ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter().getRate());
+                assertEquals(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731
+                    .MeterBandType.OFPMBTEXPERIMENTER,
+                    ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter().getType());
+                assertEquals(expBurstSize,
+                        ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter().getBurstSize());
+                assertEquals(expRate,
+                        ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter().getRate());
                 ExperimenterIdMeterBand expBand = ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter()
-                        .getAugmentation(ExperimenterIdMeterBand.class);
-                assertEquals(EXP_EXPERIMENTER, (long) expBand.getExperimenter().getValue());
-
+                        .augmentation(ExperimenterIdMeterBand.class);
+                assertEquals(expExperimenter, expBand.getExperimenter().getValue());
             }
-
         }
-
     }
+
     @Test
     public void testMeterModCommandConvertorwithNoFlags() {
-
-        long BURST_SIZE = 10L;
-        long DROP_RATE = 20L;
+        long burstSize = 10L;
+        long dropRate = 20L;
         // / DROP Band
-        MeterBandHeaderBuilder meterBandHeaderBuilder = new MeterBandHeaderBuilder();
         MeterBandTypesBuilder meterBandTypesB = new MeterBandTypesBuilder();
 
         MeterBandType bandFlag = new MeterBandType(true, false, false);
         meterBandTypesB.setFlags(bandFlag);// _ofpmbtDrop
         DropBuilder drop = new DropBuilder();
-        drop.setDropBurstSize(BURST_SIZE);
-        drop.setDropRate(DROP_RATE);
+        drop.setDropBurstSize(burstSize);
+        drop.setDropRate(dropRate);
         Drop drp = drop.build();
+
+        MeterBandHeaderBuilder meterBandHeaderBuilder = new MeterBandHeaderBuilder();
         meterBandHeaderBuilder.setBandType(drp);
         meterBandHeaderBuilder.setMeterBandTypes(meterBandTypesB.build());
+        meterBandHeaderBuilder.withKey(new MeterBandHeaderKey(new BandId(Uint32.ZERO)));
 
-        MeterBandHeader meterBH = meterBandHeaderBuilder.build();
+        final MeterBandHeader meterBH = meterBandHeaderBuilder.build();
 
         // DSCP Mark
-        long DSCP_REMARK_BURST_SIZE = 11L;
-        long DSCP_REMARK_RATE = 21L;
-        short DSCP_PERC_LEVEL = 1;
+        final long dscpRemarkBurstSize = 11L;
+        final long dscpRemarkRate = 21L;
+        final short dscpPercLevel = 1;
 
-        MeterBandHeaderBuilder meterBandHeaderBuilder1 = new MeterBandHeaderBuilder();
         MeterBandTypesBuilder meterBandTypesB1 = new MeterBandTypesBuilder();
         MeterBandType bandFlag1 = new MeterBandType(false, true, false);
 
         meterBandTypesB1.setFlags(bandFlag1);
         DscpRemarkBuilder dscp = new DscpRemarkBuilder();
 
-        dscp.setDscpRemarkBurstSize(DSCP_REMARK_BURST_SIZE);
-        dscp.setDscpRemarkRate(DSCP_REMARK_RATE);
-        dscp.setPrecLevel(DSCP_PERC_LEVEL);
+        dscp.setDscpRemarkBurstSize(dscpRemarkBurstSize);
+        dscp.setDscpRemarkRate(dscpRemarkRate);
+        dscp.setPrecLevel(dscpPercLevel);
         DscpRemark dscpRemark = dscp.build();
+
+        MeterBandHeaderBuilder meterBandHeaderBuilder1 = new MeterBandHeaderBuilder();
         meterBandHeaderBuilder1.setBandType(dscpRemark);
         meterBandHeaderBuilder1.setMeterBandTypes(meterBandTypesB1.build());
+        meterBandHeaderBuilder1.withKey(new MeterBandHeaderKey(new BandId(Uint32.ONE)));
 
-        MeterBandHeader meterBH1 = meterBandHeaderBuilder1.build();
+        final MeterBandHeader meterBH1 = meterBandHeaderBuilder1.build();
 
         // Experimental
-        long EXP_BURST_SIZE = 12L;
-        long EXP_RATE = 22L;
-        long EXP_EXPERIMENTER = 23L;
+        final long expBurstSize = 12L;
+        final long expRate = 22L;
+        final long expExperimenter = 23L;
 
-        MeterBandHeaderBuilder meterBandHeaderBuilder2 = new MeterBandHeaderBuilder();
         MeterBandTypesBuilder meterBandTypesB2 = new MeterBandTypesBuilder();
         MeterBandType bandFlag2 = new MeterBandType(false, false, true);
         meterBandTypesB2.setFlags(bandFlag2);
 
         ExperimenterBuilder exp = new ExperimenterBuilder();
 
-        exp.setExperimenterBurstSize(EXP_BURST_SIZE);
-        exp.setExperimenterRate(EXP_RATE);
-        exp.setExperimenter(EXP_EXPERIMENTER);
+        exp.setExperimenterBurstSize(expBurstSize);
+        exp.setExperimenterRate(expRate);
+        exp.setExperimenter(expExperimenter);
         Experimenter experimenter = exp.build();
+
+        MeterBandHeaderBuilder meterBandHeaderBuilder2 = new MeterBandHeaderBuilder();
         meterBandHeaderBuilder2.setBandType(experimenter);
         meterBandHeaderBuilder2.setMeterBandTypes(meterBandTypesB2.build());
+        meterBandHeaderBuilder2.withKey(new MeterBandHeaderKey(new BandId(Uint32.TWO)));
         MeterBandHeader meterBH2 = meterBandHeaderBuilder2.build();
 
-        List<MeterBandHeader> meterBandList = new ArrayList<MeterBandHeader>();
+        List<MeterBandHeader> meterBandList = new ArrayList<>();
         meterBandList.add(0, meterBH);
         meterBandList.add(1, meterBH1);
         meterBandList.add(2, meterBH2);
@@ -249,9 +268,6 @@ public class MeterConvertorTest {
         AddMeterInputBuilder addMeterFromSAL = new AddMeterInputBuilder();
 
         addMeterFromSAL.setMeterBandHeaders(meterBandHeaders); // MeterBands
-                                                               // added to the
-                                                               // meter command.
-        Long temp = 10L;
 
         // NodeKey key = new NodeKey(new NodeId("24"));
         // InstanceIdentifier<Node> path =
@@ -263,58 +279,55 @@ public class MeterConvertorTest {
 
 
         AddMeterInput meterInputCommand = addMeterFromSAL.build();
-        MeterModInputBuilder outMeterModInput = MeterConvertor.toMeterModInput(meterInputCommand, (short) 0X4);
+        MeterModInputBuilder outMeterModInput = convert(meterInputCommand, new VersionConvertorData((short) 0X4));
 
         assertEquals(MeterModCommand.OFPMCADD, outMeterModInput.getCommand());
         assertFalse(outMeterModInput.getFlags().isOFPMFBURST());
         assertTrue(outMeterModInput.getFlags().isOFPMFPKTPS());
-        assertEquals(temp, outMeterModInput.getMeterId().getValue());
+        assertEquals(Uint32.valueOf(10L), outMeterModInput.getMeterId().getValue());
         // BandInformation starts here:
 
         List<Bands> bands = outMeterModInput.getBands();
         for (Bands currentBand : bands) {
             MeterBand meterBand = currentBand.getMeterBand();
             if (meterBand instanceof MeterBandDropCase) {
-
-                assertEquals(
-                        org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType.OFPMBTDROP,
-                        ((MeterBandDropCase) meterBand).getMeterBandDrop().getType());
-                assertEquals(BURST_SIZE, (long) ((MeterBandDropCase) meterBand).getMeterBandDrop().getBurstSize());
-                assertEquals(DROP_RATE, (long) ((MeterBandDropCase) meterBand).getMeterBandDrop().getRate());
+                assertEquals(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731
+                    .MeterBandType.OFPMBTDROP, ((MeterBandDropCase) meterBand).getMeterBandDrop().getType());
+                assertEquals(burstSize, ((MeterBandDropCase) meterBand).getMeterBandDrop().getBurstSize().toJava());
+                assertEquals(dropRate, ((MeterBandDropCase) meterBand).getMeterBandDrop().getRate().toJava());
 
             }
             if (meterBand instanceof MeterBandDscpRemarkCase) {
-                assertEquals(
-                        org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType.OFPMBTDSCPREMARK,
-                        ((MeterBandDscpRemarkCase) meterBand).getMeterBandDscpRemark().getType());
-                assertEquals(DSCP_REMARK_BURST_SIZE, (long) ((MeterBandDscpRemarkCase) meterBand).getMeterBandDscpRemark().getBurstSize());
-                assertEquals(DSCP_REMARK_RATE, (long) ((MeterBandDscpRemarkCase) meterBand).getMeterBandDscpRemark().getRate());
-                assertEquals(DSCP_PERC_LEVEL, (short) ((MeterBandDscpRemarkCase) meterBand).getMeterBandDscpRemark().getPrecLevel());
+                assertEquals(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731
+                    .MeterBandType.OFPMBTDSCPREMARK,
+                    ((MeterBandDscpRemarkCase) meterBand).getMeterBandDscpRemark().getType());
+                assertEquals(dscpRemarkBurstSize,
+                        ((MeterBandDscpRemarkCase) meterBand).getMeterBandDscpRemark().getBurstSize().toJava());
+                assertEquals(dscpRemarkRate,
+                        ((MeterBandDscpRemarkCase) meterBand).getMeterBandDscpRemark().getRate().toJava());
+                assertEquals(dscpPercLevel,
+                        ((MeterBandDscpRemarkCase) meterBand).getMeterBandDscpRemark().getPrecLevel().toJava());
 
             }
             if (meterBand instanceof MeterBandExperimenterCase) {
-                assertEquals(
-                        org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType.OFPMBTEXPERIMENTER,
-                        ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter().getType());
-                assertEquals(EXP_BURST_SIZE, (long) ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter().getBurstSize());
-                assertEquals(EXP_RATE, (long) ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter().getRate());
+                assertEquals(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731
+                    .MeterBandType.OFPMBTEXPERIMENTER,
+                     ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter().getType());
+                assertEquals(expBurstSize,
+                        ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter().getBurstSize().toJava());
+                assertEquals(expRate,
+                        ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter().getRate().toJava());
                 ExperimenterIdMeterBand expBand = ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter()
-                        .getAugmentation(ExperimenterIdMeterBand.class);
-                assertEquals(EXP_EXPERIMENTER, (long) expBand.getExperimenter().getValue());
-
+                        .augmentation(ExperimenterIdMeterBand.class);
+                assertEquals(expExperimenter, expBand.getExperimenter().getValue().toJava());
             }
-
         }
-
     }
+
     @Test
     public void testMeterModCommandConvertorBandDataisNULL() {
-
-
         AddMeterInputBuilder addMeterFromSAL = new AddMeterInputBuilder();
 
-        Long temp = 10L;
-
         // NodeKey key = new NodeKey(new NodeId("24"));
         // InstanceIdentifier<Node> path =
         // InstanceIdentifier.builder().node(Nodes.class).node(Node.class,
@@ -326,12 +339,12 @@ public class MeterConvertorTest {
         addMeterFromSAL.setFlags(flagV);
 
         AddMeterInput meterInputCommand = addMeterFromSAL.build();
-        MeterModInputBuilder outMeterModInput = MeterConvertor.toMeterModInput(meterInputCommand, (short) 0X4);
+        MeterModInputBuilder outMeterModInput = convert(meterInputCommand, new VersionConvertorData((short) 0X4));
 
         assertEquals(MeterModCommand.OFPMCADD, outMeterModInput.getCommand());
         assertTrue(outMeterModInput.getFlags().isOFPMFBURST());
-        assertEquals(temp, outMeterModInput.getMeterId().getValue());
-       }
+        assertEquals(Uint32.valueOf(10L), outMeterModInput.getMeterId().getValue());
+    }
 
     @Test
     public void testMeterModCommandConvertorNoValidBandData() {
@@ -344,11 +357,11 @@ public class MeterConvertorTest {
         meterBandTypesB.setFlags(bandFlag);// _ofpmbtDrop
 
         meterBandHeaderBuilder.setMeterBandTypes(meterBandTypesB.build());
+        meterBandHeaderBuilder.withKey(new MeterBandHeaderKey(new BandId(Uint32.ZERO)));
 
-        MeterBandHeader meterBH = meterBandHeaderBuilder.build();
+        final MeterBandHeader meterBH = meterBandHeaderBuilder.build();
 
         // DSCP Mark
-        MeterBandHeaderBuilder meterBandHeaderBuilder1 = new MeterBandHeaderBuilder();
         MeterBandTypesBuilder meterBandTypesB1 = new MeterBandTypesBuilder();
         MeterBandType bandFlag1 = new MeterBandType(false, true, false);
 
@@ -358,27 +371,31 @@ public class MeterConvertorTest {
         dscp.setDscpRemarkRate(21L);
         dscp.setPrecLevel((short) 1);
         DscpRemark dscpRemark = dscp.build();
+
+        MeterBandHeaderBuilder meterBandHeaderBuilder1 = new MeterBandHeaderBuilder();
         meterBandHeaderBuilder1.setBandType(dscpRemark);
         meterBandHeaderBuilder1.setMeterBandTypes(meterBandTypesB1.build());
+        meterBandHeaderBuilder1.withKey(new MeterBandHeaderKey(new BandId(Uint32.ONE)));
 
-        MeterBandHeader meterBH1 = meterBandHeaderBuilder1.build();
+        final MeterBandHeader meterBH1 = meterBandHeaderBuilder1.build();
 
         // Experimental
 
-        MeterBandHeaderBuilder meterBandHeaderBuilder2 = new MeterBandHeaderBuilder();
-        MeterBandTypesBuilder meterBandTypesB2 = new MeterBandTypesBuilder();
-
-
         ExperimenterBuilder exp = new ExperimenterBuilder();
         exp.setExperimenterBurstSize(12L);
         exp.setExperimenterRate(22L);
         exp.setExperimenter(23L);
         Experimenter experimenter = exp.build();
+
+        MeterBandHeaderBuilder meterBandHeaderBuilder2 = new MeterBandHeaderBuilder();
         meterBandHeaderBuilder2.setBandType(experimenter);
+
+        MeterBandTypesBuilder meterBandTypesB2 = new MeterBandTypesBuilder();
         meterBandHeaderBuilder2.setMeterBandTypes(meterBandTypesB2.build());
+        meterBandHeaderBuilder2.withKey(new MeterBandHeaderKey(new BandId(Uint32.TWO)));
         MeterBandHeader meterBH2 = meterBandHeaderBuilder2.build();
 
-        List<MeterBandHeader> meterBandList = new ArrayList<MeterBandHeader>();
+        List<MeterBandHeader> meterBandList = new ArrayList<>();
         meterBandList.add(0, meterBH);
         meterBandList.add(1, meterBH1);
         meterBandList.add(2, meterBH2);
@@ -392,9 +409,6 @@ public class MeterConvertorTest {
         AddMeterInputBuilder addMeterFromSAL = new AddMeterInputBuilder();
 
         addMeterFromSAL.setMeterBandHeaders(meterBandHeaders); // MeterBands
-                                                               // added to the
-                                                               // meter command.
-        Long temp = 10L;
 
         // NodeKey key = new NodeKey(new NodeId("24"));
         // InstanceIdentifier<Node> path =
@@ -407,11 +421,11 @@ public class MeterConvertorTest {
         addMeterFromSAL.setFlags(flagV);
 
         AddMeterInput meterInputCommand = addMeterFromSAL.build();
-        MeterModInputBuilder outMeterModInput = MeterConvertor.toMeterModInput(meterInputCommand, (short) 0X4);
+        MeterModInputBuilder outMeterModInput = convert(meterInputCommand, new VersionConvertorData((short) 0X4));
 
         assertEquals(MeterModCommand.OFPMCADD, outMeterModInput.getCommand());
         assertTrue(outMeterModInput.getFlags().isOFPMFBURST());
-        assertEquals(temp, outMeterModInput.getMeterId().getValue());
+        assertEquals(Uint32.valueOf(10L), outMeterModInput.getMeterId().getValue());
         // BandInformation starts here:
 
         List<Bands> bands = outMeterModInput.getBands();
@@ -419,36 +433,41 @@ public class MeterConvertorTest {
             MeterBand meterBand = currentBand.getMeterBand();
             if (meterBand instanceof MeterBandDropCase) {
 
-                assertEquals(
-                        org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType.OFPMBTDROP,
-                        ((MeterBandDropCase) meterBand).getMeterBandDrop().getType());
-                assertEquals((long) 20, (long) ((MeterBandDropCase) meterBand).getMeterBandDrop().getBurstSize());
-                assertEquals((long) 10, (long) ((MeterBandDropCase) meterBand).getMeterBandDrop().getRate());
+                assertEquals(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731
+                    .MeterBandType.OFPMBTDROP, ((MeterBandDropCase) meterBand).getMeterBandDrop().getType());
+                assertEquals(20, ((MeterBandDropCase) meterBand).getMeterBandDrop().getBurstSize());
+                assertEquals(10, ((MeterBandDropCase) meterBand).getMeterBandDrop().getRate());
 
             }
             if (meterBand instanceof MeterBandDscpRemarkCase) {
-                assertEquals(
-                        org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType.OFPMBTDSCPREMARK,
+                assertEquals(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731
+                        .MeterBandType.OFPMBTDSCPREMARK,
                         ((MeterBandDscpRemarkCase) meterBand).getMeterBandDscpRemark().getType());
-                assertEquals((long) 11, (long) ((MeterBandDscpRemarkCase) meterBand).getMeterBandDscpRemark().getBurstSize());
-                assertEquals((long) 21, (long) ((MeterBandDscpRemarkCase) meterBand).getMeterBandDscpRemark().getRate());
-                assertEquals((short) 1, (short) ((MeterBandDscpRemarkCase) meterBand).getMeterBandDscpRemark().getPrecLevel());
+                assertEquals(11,
+                        ((MeterBandDscpRemarkCase) meterBand).getMeterBandDscpRemark().getBurstSize().toJava());
+                assertEquals(21,
+                        ((MeterBandDscpRemarkCase) meterBand).getMeterBandDscpRemark().getRate().toJava());
+                assertEquals((short) 1,
+                        ((MeterBandDscpRemarkCase) meterBand).getMeterBandDscpRemark().getPrecLevel().toJava());
 
             }
             if (meterBand instanceof MeterBandExperimenterCase) {
-                assertEquals(
-                        org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType.OFPMBTEXPERIMENTER,
+                assertEquals(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731
+                        .MeterBandType.OFPMBTEXPERIMENTER,
                         ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter().getType());
-                assertEquals((long) 12, (long) ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter().getBurstSize());
-                assertEquals((long) 22, (long) ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter().getRate());
+                assertEquals(12,
+                        ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter().getBurstSize());
+                assertEquals(22,
+                        ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter().getRate());
                 ExperimenterIdMeterBand expBand = ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter()
-                        .getAugmentation(ExperimenterIdMeterBand.class);
-                assertEquals((long) 23, (long) expBand.getExperimenter().getValue());
-
+                        .augmentation(ExperimenterIdMeterBand.class);
+                assertEquals(23, expBand.getExperimenter().getValue());
             }
-
         }
-
     }
 
+    private MeterModInputBuilder convert(final Meter source, final VersionConvertorData data) {
+        Optional<MeterModInputBuilder> outMeterModInputOptional = convertorManager.convert(source, data);
+        return outMeterModInputOptional.orElse(MeterConvertor.defaultResult(data.getVersion()));
+    }
 }