1 package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor;
3 import java.util.ArrayList;
6 import junit.framework.Assert;
9 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.AddMeterInput;
10 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.AddMeterInputBuilder;
11 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterFlags.Flags;
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.Drop;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.DropBuilder;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.DscpRemark;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.DscpRemarkBuilder;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.Experimenter;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.ExperimenterBuilder;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.MeterBandHeaders;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.MeterBandHeadersBuilder;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.meter.band.headers.MeterBandHeader;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.meter.band.headers.MeterBandHeaderBuilder;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.meter.band.headers.meter.band.header.MeterBandTypesBuilder;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterModCommand;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MeterModInput;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.MeterBand;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandDrop;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandDscpRemark;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandExperimenter;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.mod.Bands;
32 public class MeterConvertorTest {
37 public void testMeterModCommandConvertorwithAllParameters()
41 MeterBandHeaderBuilder meterBandHeaderBuilder = new MeterBandHeaderBuilder();
42 MeterBandTypesBuilder meterBandTypesB = new MeterBandTypesBuilder();
44 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);
45 meterBandTypesB.setFlags(bandFlag);//_ofpmbtDrop
46 DropBuilder drop = new DropBuilder();
47 drop.setBurstSize(10L);
49 Drop drp = drop.build();
50 meterBandHeaderBuilder.setBandType(drp);
51 meterBandHeaderBuilder.setMeterBandTypes(meterBandTypesB.build());
55 MeterBandHeader meterBH = meterBandHeaderBuilder.build();
58 MeterBandHeaderBuilder meterBandHeaderBuilder1 = new MeterBandHeaderBuilder();
59 MeterBandTypesBuilder meterBandTypesB1 = new MeterBandTypesBuilder();
60 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);
62 meterBandTypesB1.setFlags(bandFlag1);
63 DscpRemarkBuilder dscp = new DscpRemarkBuilder();
64 dscp.setBurstSize(11L);
66 dscp.setPercLevel((short)1);
67 DscpRemark dscpRemark = dscp.build();
68 meterBandHeaderBuilder1.setBandType(dscpRemark);
69 meterBandHeaderBuilder1.setMeterBandTypes(meterBandTypesB1.build());
71 MeterBandHeader meterBH1 = meterBandHeaderBuilder1.build();
75 MeterBandHeaderBuilder meterBandHeaderBuilder2 = new MeterBandHeaderBuilder();
76 MeterBandTypesBuilder meterBandTypesB2 = new MeterBandTypesBuilder();
77 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);
78 meterBandTypesB2.setFlags(bandFlag2);
80 ExperimenterBuilder exp = new ExperimenterBuilder();
81 exp.setBurstSize(12L);
83 exp.setExperimenter(23L);
84 Experimenter experimenter = exp.build();
85 meterBandHeaderBuilder2.setBandType(experimenter);
86 meterBandHeaderBuilder2.setMeterBandTypes(meterBandTypesB2.build());
87 MeterBandHeader meterBH2 = meterBandHeaderBuilder2.build();
90 List<MeterBandHeader> meterBandList = new ArrayList<MeterBandHeader>();
91 meterBandList.add(0,meterBH);
92 meterBandList.add(1,meterBH1);
93 meterBandList.add(2,meterBH2);
95 //Constructing List of Bands
96 MeterBandHeadersBuilder meterBandHeadersBuilder = new MeterBandHeadersBuilder();
97 meterBandHeadersBuilder.setMeterBandHeader(meterBandList);
99 MeterBandHeaders meterBandHeaders =meterBandHeadersBuilder.build();
102 AddMeterInputBuilder addMeterFromSAL = new AddMeterInputBuilder();
105 addMeterFromSAL.setMeterBandHeaders(meterBandHeaders); //MeterBands added to the meter command.
108 //NodeKey key = new NodeKey(new NodeId("24"));
109 //InstanceIdentifier<Node> path = InstanceIdentifier.builder().node(Nodes.class).node(Node.class, key).toInstance();
111 addMeterFromSAL.setMeterId(new org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterId(10L));
114 Flags flagV = new Flags(true, true, true,true);
115 addMeterFromSAL.setFlags(flagV);
117 AddMeterInput meterInputCommand = addMeterFromSAL.build();
118 MeterModInput outMeterModInput = MeterConvertor.toMeterModInput(meterInputCommand, (short) 0X4);
123 Assert.assertEquals(MeterModCommand.OFPMCADD, outMeterModInput.getCommand());
124 Assert.assertTrue(outMeterModInput.getFlags().isOFPMFBURST());
125 Assert.assertEquals(temp,outMeterModInput.getMeterId().getValue());
126 //BandInformation starts here:
128 List<Bands> bands = outMeterModInput.getBands();
129 for (Bands currentBand : bands) {
130 MeterBand meterBand = currentBand.getMeterBand();
131 if(meterBand instanceof MeterBandDrop){
133 Assert.assertEquals(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType.OFPMBTDROP, ((MeterBandDrop) meterBand).getType());
134 Assert.assertEquals((long)20,(long)((MeterBandDrop) meterBand).getBurstSize());
135 Assert.assertEquals((long)10, (long)((MeterBandDrop) meterBand).getRate());
138 if(meterBand instanceof MeterBandDscpRemark)
140 Assert.assertEquals(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType.OFPMBTDSCPREMARK, ((MeterBandDscpRemark) meterBand).getType());
141 Assert.assertEquals((long)11,(long)((MeterBandDscpRemark) meterBand).getBurstSize());
142 Assert.assertEquals((long)21, (long)((MeterBandDscpRemark) meterBand).getRate());
143 Assert.assertEquals((short)1, (short)((MeterBandDscpRemark) meterBand).getPrecLevel());
146 if(meterBand instanceof MeterBandExperimenter)
148 Assert.assertEquals(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType.OFPMBTEXPERIMENTER, ((MeterBandExperimenter) meterBand).getType());
149 Assert.assertEquals((long)12,(long)((MeterBandExperimenter) meterBand).getBurstSize());
150 Assert.assertEquals((long)22, (long)((MeterBandExperimenter) meterBand).getRate());
151 Assert.assertEquals((long)23, (long)((MeterBandExperimenter) meterBand).getExperimenter());