+/*
+ * 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
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
import java.util.ArrayList;
import java.util.List;
-
-import junit.framework.Assert;
-
-import org.junit.After;
+import java.util.Optional;
import org.junit.Before;
import org.junit.Test;
-
-
-
-import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.MeterConvertor;
+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.Flags;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.BandType;
+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;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.DropBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.DscpRemark;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.ExperimenterBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.MeterBandHeaders;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.MeterBandHeadersBuilder;
-
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MeterModInput;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.MeterBand;
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;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MeterModInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.MeterBand;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandDropCase;
+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();
+ }
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterModCommand;
+ @Test
+ public void testMeterModCommandConvertorwithAllParameters() {
+ final Uint32 burstSize = Uint32.valueOf(10L);
+ final Uint32 dropRate = Uint32.valueOf(20L);
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandDrop;
+ // / DROP Band
+ MeterBandTypesBuilder meterBandTypesB = new MeterBandTypesBuilder();
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandDscpRemark;
+ MeterBandType bandFlag = new MeterBandType(true, false, false);
+ meterBandTypesB.setFlags(bandFlag);// _ofpmbtDrop
+ DropBuilder drop = new DropBuilder();
+ 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)));
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandExperimenter;
+ final MeterBandHeader meterBH = meterBandHeaderBuilder.build();
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.mod.Bands;
+ // DSCP Mark
+ final Uint32 dscpRemarkBurstSize = Uint32.valueOf(11L);
+ final Uint32 dscpRemarkRate = Uint32.valueOf(21L);
+ final Uint8 dscpPercLevel = Uint8.valueOf(1);
+ MeterBandTypesBuilder meterBandTypesB1 = new MeterBandTypesBuilder();
+ MeterBandType bandFlag1 = new MeterBandType(false, true, false);
-public class MeterConvertorTest {
-
-
-
-@Test
-public void testMeterModCommandConvertorwithAllParameters()
-{
-
- /// DROP Band
- MeterBandHeaderBuilder meterBandHeaderBuilder = new MeterBandHeaderBuilder();
- MeterBandTypesBuilder meterBandTypesB = new MeterBandTypesBuilder();
-
- org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterBandType.Flags bandFlag = new org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterBandType.Flags(true, false, false);
- meterBandTypesB.setFlags(bandFlag);//_ofpmbtDrop
- DropBuilder drop = new DropBuilder();
- drop.setBurstSize(10L);
- drop.setRate(20L);
- Drop drp = drop.build();
- meterBandHeaderBuilder.setBandType(drp);
- meterBandHeaderBuilder.setMeterBandTypes(meterBandTypesB.build());
-
-
-
- MeterBandHeader meterBH = meterBandHeaderBuilder.build();
-
- //DSCP Mark
- MeterBandHeaderBuilder meterBandHeaderBuilder1 = new MeterBandHeaderBuilder();
- MeterBandTypesBuilder meterBandTypesB1 = new MeterBandTypesBuilder();
- org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterBandType.Flags bandFlag1 = new org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterBandType.Flags(false, true, false);
-
- meterBandTypesB1.setFlags(bandFlag1);
- DscpRemarkBuilder dscp = new DscpRemarkBuilder();
- dscp.setBurstSize(11L);
- dscp.setRate(21L);
- dscp.setPercLevel((short)1);
- DscpRemark dscpRemark = dscp.build();
- meterBandHeaderBuilder1.setBandType(dscpRemark);
- meterBandHeaderBuilder1.setMeterBandTypes(meterBandTypesB1.build());
-
- MeterBandHeader meterBH1 = meterBandHeaderBuilder1.build();
-
- //Experimental
-
- MeterBandHeaderBuilder meterBandHeaderBuilder2 = new MeterBandHeaderBuilder();
- MeterBandTypesBuilder meterBandTypesB2 = new MeterBandTypesBuilder();
- org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterBandType.Flags bandFlag2 = new org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterBandType.Flags(false,false, true);
- meterBandTypesB2.setFlags(bandFlag2);
-
- ExperimenterBuilder exp = new ExperimenterBuilder();
- exp.setBurstSize(12L);
- exp.setRate(22L);
- exp.setExperimenter(23L);
- Experimenter experimenter = exp.build();
- meterBandHeaderBuilder2.setBandType(experimenter);
- meterBandHeaderBuilder2.setMeterBandTypes(meterBandTypesB2.build());
- MeterBandHeader meterBH2 = meterBandHeaderBuilder2.build();
-
-
- List<MeterBandHeader> meterBandList = new ArrayList<MeterBandHeader>();
- meterBandList.add(0,meterBH);
- meterBandList.add(1,meterBH1);
- meterBandList.add(2,meterBH2);
-
- //Constructing List of Bands
- MeterBandHeadersBuilder meterBandHeadersBuilder = new MeterBandHeadersBuilder();
- meterBandHeadersBuilder.setMeterBandHeader(meterBandList);
-
- MeterBandHeaders meterBandHeaders =meterBandHeadersBuilder.build();
-
-
- 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 = InstanceIdentifier.builder().node(Nodes.class).node(Node.class, key).toInstance();
-
- addMeterFromSAL.setMeterId(new org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterId(10L));
-
-
- Flags flagV = new Flags(true, true, true,true);
- addMeterFromSAL.setFlags(flagV);
-
- AddMeterInput meterInputCommand = addMeterFromSAL.build();
- MeterModInput outMeterModInput = MeterConvertor.toMeterModInput(meterInputCommand);
-
-
-
-
- Assert.assertEquals(MeterModCommand.OFPMCADD, outMeterModInput.getCommand());
- Assert.assertTrue(outMeterModInput.getFlags().isOFPMFBURST());
- Assert.assertEquals(temp,outMeterModInput.getMeterId().getValue());
- //BandInformation starts here:
-
- List<Bands> bands = outMeterModInput.getBands();
- for (Bands currentBand : bands) {
- MeterBand meterBand = currentBand.getMeterBand();
- if(meterBand instanceof MeterBandDrop){
-
- Assert.assertEquals(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType.OFPMBTDROP, ((MeterBandDrop) meterBand).getType());
- Assert.assertEquals((long)20,(long)((MeterBandDrop) meterBand).getBurstSize());
- Assert.assertEquals((long)10, (long)((MeterBandDrop) meterBand).getRate());
-
- }
- if(meterBand instanceof MeterBandDscpRemark)
- {
- Assert.assertEquals(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType.OFPMBTDSCPREMARK, ((MeterBandDscpRemark) meterBand).getType());
- Assert.assertEquals((long)11,(long)((MeterBandDscpRemark) meterBand).getBurstSize());
- Assert.assertEquals((long)21, (long)((MeterBandDscpRemark) meterBand).getRate());
- Assert.assertEquals((short)1, (short)((MeterBandDscpRemark) meterBand).getPrecLevel());
-
- }
- if(meterBand instanceof MeterBandExperimenter)
- {
- Assert.assertEquals(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType.OFPMBTEXPERIMENTER, ((MeterBandExperimenter) meterBand).getType());
- Assert.assertEquals((long)12,(long)((MeterBandExperimenter) meterBand).getBurstSize());
- Assert.assertEquals((long)22, (long)((MeterBandExperimenter) meterBand).getRate());
- Assert.assertEquals((long)23, (long)((MeterBandExperimenter) meterBand).getExperimenter());
-
- }
-
- }
-
-
-}
+ meterBandTypesB1.setFlags(bandFlag1);
+ DscpRemarkBuilder dscp = new DscpRemarkBuilder();
+ 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)));
+
+ final MeterBandHeader meterBH1 = meterBandHeaderBuilder1.build();
+
+ // Experimental
+ final Uint32 expBurstSize = Uint32.valueOf(12L);
+ final Uint32 expRate = Uint32.valueOf(22L);
+ final Uint32 expExperimenter = Uint32.valueOf(23L);
+
+ MeterBandTypesBuilder meterBandTypesB2 = new MeterBandTypesBuilder();
+ MeterBandType bandFlag2 = new MeterBandType(false, false, true);
+ meterBandTypesB2.setFlags(bandFlag2);
+
+ ExperimenterBuilder exp = new ExperimenterBuilder();
+ 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<>();
+ meterBandList.add(0, meterBH);
+ meterBandList.add(1, meterBH1);
+ meterBandList.add(2, meterBH2);
+
+ // Constructing List of Bands
+ MeterBandHeadersBuilder meterBandHeadersBuilder = new MeterBandHeadersBuilder();
+ meterBandHeadersBuilder.setMeterBandHeader(meterBandList);
+
+ MeterBandHeaders meterBandHeaders = meterBandHeadersBuilder.build();
+
+ AddMeterInputBuilder addMeterFromSAL = new AddMeterInputBuilder();
+
+ addMeterFromSAL.setMeterBandHeaders(meterBandHeaders); // MeterBands
+
+ // NodeKey key = new NodeKey(new NodeId("24"));
+ // InstanceIdentifier<Node> path =
+ // InstanceIdentifier.builder().node(Nodes.class).node(Node.class,
+ // key).build();
+
+ addMeterFromSAL
+ .setMeterId(new org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterId(10L));
+ MeterFlags flagV = new MeterFlags(true, true, true, true);
+ addMeterFromSAL.setFlags(flagV);
+
+ AddMeterInput meterInputCommand = addMeterFromSAL.build();
+ MeterModInputBuilder outMeterModInput = convert(meterInputCommand, new VersionConvertorData((short) 0X4));
+
+ assertEquals(MeterModCommand.OFPMCADD, outMeterModInput.getCommand());
+ assertTrue(outMeterModInput.getFlags().isOFPMFBURST());
+ 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(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(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(expBurstSize,
+ ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter().getBurstSize());
+ assertEquals(expRate,
+ ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter().getRate());
+ ExperimenterIdMeterBand expBand = ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter()
+ .augmentation(ExperimenterIdMeterBand.class);
+ assertEquals(expExperimenter, expBand.getExperimenter().getValue());
+ }
+ }
+ }
+
+ @Test
+ public void testMeterModCommandConvertorwithNoFlags() {
+ long burstSize = 10L;
+ long dropRate = 20L;
+ // / DROP Band
+ MeterBandTypesBuilder meterBandTypesB = new MeterBandTypesBuilder();
+
+ MeterBandType bandFlag = new MeterBandType(true, false, false);
+ meterBandTypesB.setFlags(bandFlag);// _ofpmbtDrop
+ DropBuilder drop = new DropBuilder();
+ 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)));
+
+ final MeterBandHeader meterBH = meterBandHeaderBuilder.build();
+
+ // DSCP Mark
+ final long dscpRemarkBurstSize = 11L;
+ final long dscpRemarkRate = 21L;
+ final short dscpPercLevel = 1;
+
+ MeterBandTypesBuilder meterBandTypesB1 = new MeterBandTypesBuilder();
+ MeterBandType bandFlag1 = new MeterBandType(false, true, false);
+
+ meterBandTypesB1.setFlags(bandFlag1);
+ DscpRemarkBuilder dscp = new DscpRemarkBuilder();
+
+ 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)));
+
+ final MeterBandHeader meterBH1 = meterBandHeaderBuilder1.build();
+
+ // Experimental
+ final long expBurstSize = 12L;
+ final long expRate = 22L;
+ final long expExperimenter = 23L;
+
+ MeterBandTypesBuilder meterBandTypesB2 = new MeterBandTypesBuilder();
+ MeterBandType bandFlag2 = new MeterBandType(false, false, true);
+ meterBandTypesB2.setFlags(bandFlag2);
+
+ ExperimenterBuilder exp = new ExperimenterBuilder();
+
+ 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<>();
+ meterBandList.add(0, meterBH);
+ meterBandList.add(1, meterBH1);
+ meterBandList.add(2, meterBH2);
+
+ // Constructing List of Bands
+ MeterBandHeadersBuilder meterBandHeadersBuilder = new MeterBandHeadersBuilder();
+ meterBandHeadersBuilder.setMeterBandHeader(meterBandList);
+
+ MeterBandHeaders meterBandHeaders = meterBandHeadersBuilder.build();
+
+ AddMeterInputBuilder addMeterFromSAL = new AddMeterInputBuilder();
+
+ addMeterFromSAL.setMeterBandHeaders(meterBandHeaders); // MeterBands
+
+ // NodeKey key = new NodeKey(new NodeId("24"));
+ // InstanceIdentifier<Node> path =
+ // InstanceIdentifier.builder().node(Nodes.class).node(Node.class,
+ // key).build();
+
+ addMeterFromSAL
+ .setMeterId(new org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterId(10L));
+
+
+ AddMeterInput meterInputCommand = addMeterFromSAL.build();
+ MeterModInputBuilder outMeterModInput = convert(meterInputCommand, new VersionConvertorData((short) 0X4));
+
+ assertEquals(MeterModCommand.OFPMCADD, outMeterModInput.getCommand());
+ assertFalse(outMeterModInput.getFlags().isOFPMFBURST());
+ assertTrue(outMeterModInput.getFlags().isOFPMFPKTPS());
+ 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(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(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(expBurstSize,
+ ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter().getBurstSize().toJava());
+ assertEquals(expRate,
+ ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter().getRate().toJava());
+ ExperimenterIdMeterBand expBand = ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter()
+ .augmentation(ExperimenterIdMeterBand.class);
+ assertEquals(expExperimenter, expBand.getExperimenter().getValue().toJava());
+ }
+ }
+ }
+
+ @Test
+ public void testMeterModCommandConvertorBandDataisNULL() {
+ AddMeterInputBuilder addMeterFromSAL = new AddMeterInputBuilder();
+
+ // NodeKey key = new NodeKey(new NodeId("24"));
+ // InstanceIdentifier<Node> path =
+ // InstanceIdentifier.builder().node(Nodes.class).node(Node.class,
+ // key).build();
+
+ addMeterFromSAL
+ .setMeterId(new org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterId(10L));
+ MeterFlags flagV = new MeterFlags(true, true, true, true);
+ addMeterFromSAL.setFlags(flagV);
+
+ AddMeterInput meterInputCommand = addMeterFromSAL.build();
+ MeterModInputBuilder outMeterModInput = convert(meterInputCommand, new VersionConvertorData((short) 0X4));
+
+ assertEquals(MeterModCommand.OFPMCADD, outMeterModInput.getCommand());
+ assertTrue(outMeterModInput.getFlags().isOFPMFBURST());
+ assertEquals(Uint32.valueOf(10L), outMeterModInput.getMeterId().getValue());
+ }
+
+ @Test
+ public void testMeterModCommandConvertorNoValidBandData() {
+
+ // / DROP Band
+ MeterBandHeaderBuilder meterBandHeaderBuilder = new MeterBandHeaderBuilder();
+ MeterBandTypesBuilder meterBandTypesB = new MeterBandTypesBuilder();
+
+ MeterBandType bandFlag = new MeterBandType(true, false, false);
+ meterBandTypesB.setFlags(bandFlag);// _ofpmbtDrop
+
+ meterBandHeaderBuilder.setMeterBandTypes(meterBandTypesB.build());
+ meterBandHeaderBuilder.withKey(new MeterBandHeaderKey(new BandId(Uint32.ZERO)));
+
+ final MeterBandHeader meterBH = meterBandHeaderBuilder.build();
+
+ // DSCP Mark
+ MeterBandTypesBuilder meterBandTypesB1 = new MeterBandTypesBuilder();
+ MeterBandType bandFlag1 = new MeterBandType(false, true, false);
+
+ meterBandTypesB1.setFlags(bandFlag1);
+ DscpRemarkBuilder dscp = new DscpRemarkBuilder();
+ dscp.setDscpRemarkBurstSize(11L);
+ 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)));
+
+ final MeterBandHeader meterBH1 = meterBandHeaderBuilder1.build();
+
+ // Experimental
+
+ 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<>();
+ meterBandList.add(0, meterBH);
+ meterBandList.add(1, meterBH1);
+ meterBandList.add(2, meterBH2);
+
+ // Constructing List of Bands
+ MeterBandHeadersBuilder meterBandHeadersBuilder = new MeterBandHeadersBuilder();
+ meterBandHeadersBuilder.setMeterBandHeader(meterBandList);
+
+ MeterBandHeaders meterBandHeaders = meterBandHeadersBuilder.build();
+
+ AddMeterInputBuilder addMeterFromSAL = new AddMeterInputBuilder();
+
+ addMeterFromSAL.setMeterBandHeaders(meterBandHeaders); // MeterBands
+
+ // NodeKey key = new NodeKey(new NodeId("24"));
+ // InstanceIdentifier<Node> path =
+ // InstanceIdentifier.builder().node(Nodes.class).node(Node.class,
+ // key).build();
+
+ addMeterFromSAL
+ .setMeterId(new org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterId(10L));
+ MeterFlags flagV = new MeterFlags(true, true, true, true);
+ addMeterFromSAL.setFlags(flagV);
+
+ AddMeterInput meterInputCommand = addMeterFromSAL.build();
+ MeterModInputBuilder outMeterModInput = convert(meterInputCommand, new VersionConvertorData((short) 0X4));
+
+ assertEquals(MeterModCommand.OFPMCADD, outMeterModInput.getCommand());
+ assertTrue(outMeterModInput.getFlags().isOFPMFBURST());
+ 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(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,
+ ((MeterBandDscpRemarkCase) meterBand).getMeterBandDscpRemark().getType());
+ 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,
+ ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter().getType());
+ assertEquals(12,
+ ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter().getBurstSize());
+ assertEquals(22,
+ ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter().getRate());
+ ExperimenterIdMeterBand expBand = ((MeterBandExperimenterCase) meterBand).getMeterBandExperimenter()
+ .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()));
+ }
}