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.MeterBandType;
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterFlags;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.Drop;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.DropBuilder;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.DscpRemark;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.DscpRemarkBuilder;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.Experimenter;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.ExperimenterBuilder;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.MeterBandHeaders;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.MeterBandHeadersBuilder;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.meter.band.headers.MeterBandHeader;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.meter.band.headers.MeterBandHeaderBuilder;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.meter.band.headers.meter.band.header.MeterBandTypesBuilder;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterModCommand;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MeterModInput;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.MeterBand;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandDrop;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandDscpRemark;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandExperimenter;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.mod.Bands;
32 public class MeterConvertorTest {
35 public void testMeterModCommandConvertorwithAllParameters() {
38 MeterBandHeaderBuilder meterBandHeaderBuilder = new MeterBandHeaderBuilder();
39 MeterBandTypesBuilder meterBandTypesB = new MeterBandTypesBuilder();
41 MeterBandType bandFlag = new MeterBandType(true, false, false);
42 meterBandTypesB.setFlags(bandFlag);// _ofpmbtDrop
43 DropBuilder drop = new DropBuilder();
44 drop.setBurstSize(10L);
46 Drop drp = drop.build();
47 meterBandHeaderBuilder.setBandType(drp);
48 meterBandHeaderBuilder.setMeterBandTypes(meterBandTypesB.build());
50 MeterBandHeader meterBH = meterBandHeaderBuilder.build();
53 MeterBandHeaderBuilder meterBandHeaderBuilder1 = new MeterBandHeaderBuilder();
54 MeterBandTypesBuilder meterBandTypesB1 = new MeterBandTypesBuilder();
55 MeterBandType bandFlag1 = new MeterBandType(false, true, false);
57 meterBandTypesB1.setFlags(bandFlag1);
58 DscpRemarkBuilder dscp = new DscpRemarkBuilder();
59 dscp.setBurstSize(11L);
61 dscp.setPercLevel((short) 1);
62 DscpRemark dscpRemark = dscp.build();
63 meterBandHeaderBuilder1.setBandType(dscpRemark);
64 meterBandHeaderBuilder1.setMeterBandTypes(meterBandTypesB1.build());
66 MeterBandHeader meterBH1 = meterBandHeaderBuilder1.build();
70 MeterBandHeaderBuilder meterBandHeaderBuilder2 = new MeterBandHeaderBuilder();
71 MeterBandTypesBuilder meterBandTypesB2 = new MeterBandTypesBuilder();
72 MeterBandType bandFlag2 = new MeterBandType(false, false, true);
73 meterBandTypesB2.setFlags(bandFlag2);
75 ExperimenterBuilder exp = new ExperimenterBuilder();
76 exp.setBurstSize(12L);
78 exp.setExperimenter(23L);
79 Experimenter experimenter = exp.build();
80 meterBandHeaderBuilder2.setBandType(experimenter);
81 meterBandHeaderBuilder2.setMeterBandTypes(meterBandTypesB2.build());
82 MeterBandHeader meterBH2 = meterBandHeaderBuilder2.build();
84 List<MeterBandHeader> meterBandList = new ArrayList<MeterBandHeader>();
85 meterBandList.add(0, meterBH);
86 meterBandList.add(1, meterBH1);
87 meterBandList.add(2, meterBH2);
89 // Constructing List of Bands
90 MeterBandHeadersBuilder meterBandHeadersBuilder = new MeterBandHeadersBuilder();
91 meterBandHeadersBuilder.setMeterBandHeader(meterBandList);
93 MeterBandHeaders meterBandHeaders = meterBandHeadersBuilder.build();
95 AddMeterInputBuilder addMeterFromSAL = new AddMeterInputBuilder();
97 addMeterFromSAL.setMeterBandHeaders(meterBandHeaders); // MeterBands
102 // NodeKey key = new NodeKey(new NodeId("24"));
103 // InstanceIdentifier<Node> path =
104 // InstanceIdentifier.builder().node(Nodes.class).node(Node.class,
105 // key).toInstance();
108 .setMeterId(new org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterId(10L));
109 MeterFlags flagV = new MeterFlags(true, true, true, true);
110 addMeterFromSAL.setFlags(flagV);
112 AddMeterInput meterInputCommand = addMeterFromSAL.build();
113 MeterModInput outMeterModInput = MeterConvertor.toMeterModInput(meterInputCommand, (short) 0X4);
115 Assert.assertEquals(MeterModCommand.OFPMCADD, outMeterModInput.getCommand());
116 Assert.assertTrue(outMeterModInput.getFlags().isOFPMFBURST());
117 Assert.assertEquals(temp, outMeterModInput.getMeterId().getValue());
118 // BandInformation starts here:
120 List<Bands> bands = outMeterModInput.getBands();
121 for (Bands currentBand : bands) {
122 MeterBand meterBand = currentBand.getMeterBand();
123 if (meterBand instanceof MeterBandDrop) {
126 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType.OFPMBTDROP,
127 ((MeterBandDrop) meterBand).getType());
128 Assert.assertEquals((long) 20, (long) ((MeterBandDrop) meterBand).getBurstSize());
129 Assert.assertEquals((long) 10, (long) ((MeterBandDrop) meterBand).getRate());
132 if (meterBand instanceof MeterBandDscpRemark) {
134 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType.OFPMBTDSCPREMARK,
135 ((MeterBandDscpRemark) meterBand).getType());
136 Assert.assertEquals((long) 11, (long) ((MeterBandDscpRemark) meterBand).getBurstSize());
137 Assert.assertEquals((long) 21, (long) ((MeterBandDscpRemark) meterBand).getRate());
138 Assert.assertEquals((short) 1, (short) ((MeterBandDscpRemark) meterBand).getPrecLevel());
141 if (meterBand instanceof MeterBandExperimenter) {
143 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType.OFPMBTEXPERIMENTER,
144 ((MeterBandExperimenter) meterBand).getType());
145 Assert.assertEquals((long) 12, (long) ((MeterBandExperimenter) meterBand).getBurstSize());
146 Assert.assertEquals((long) 22, (long) ((MeterBandExperimenter) meterBand).getRate());
147 Assert.assertEquals((long) 23, (long) ((MeterBandExperimenter) meterBand).getExperimenter());
155 public void testMeterModCommandConvertorwithNoFlags() {
158 MeterBandHeaderBuilder meterBandHeaderBuilder = new MeterBandHeaderBuilder();
159 MeterBandTypesBuilder meterBandTypesB = new MeterBandTypesBuilder();
161 MeterBandType bandFlag = new MeterBandType(true, false, false);
162 meterBandTypesB.setFlags(bandFlag);// _ofpmbtDrop
163 DropBuilder drop = new DropBuilder();
164 drop.setBurstSize(10L);
166 Drop drp = drop.build();
167 meterBandHeaderBuilder.setBandType(drp);
168 meterBandHeaderBuilder.setMeterBandTypes(meterBandTypesB.build());
170 MeterBandHeader meterBH = meterBandHeaderBuilder.build();
173 MeterBandHeaderBuilder meterBandHeaderBuilder1 = new MeterBandHeaderBuilder();
174 MeterBandTypesBuilder meterBandTypesB1 = new MeterBandTypesBuilder();
175 MeterBandType bandFlag1 = new MeterBandType(false, true, false);
177 meterBandTypesB1.setFlags(bandFlag1);
178 DscpRemarkBuilder dscp = new DscpRemarkBuilder();
179 dscp.setBurstSize(11L);
181 dscp.setPercLevel((short) 1);
182 DscpRemark dscpRemark = dscp.build();
183 meterBandHeaderBuilder1.setBandType(dscpRemark);
184 meterBandHeaderBuilder1.setMeterBandTypes(meterBandTypesB1.build());
186 MeterBandHeader meterBH1 = meterBandHeaderBuilder1.build();
190 MeterBandHeaderBuilder meterBandHeaderBuilder2 = new MeterBandHeaderBuilder();
191 MeterBandTypesBuilder meterBandTypesB2 = new MeterBandTypesBuilder();
192 MeterBandType bandFlag2 = new MeterBandType(false, false, true);
193 meterBandTypesB2.setFlags(bandFlag2);
195 ExperimenterBuilder exp = new ExperimenterBuilder();
196 exp.setBurstSize(12L);
198 exp.setExperimenter(23L);
199 Experimenter experimenter = exp.build();
200 meterBandHeaderBuilder2.setBandType(experimenter);
201 meterBandHeaderBuilder2.setMeterBandTypes(meterBandTypesB2.build());
202 MeterBandHeader meterBH2 = meterBandHeaderBuilder2.build();
204 List<MeterBandHeader> meterBandList = new ArrayList<MeterBandHeader>();
205 meterBandList.add(0, meterBH);
206 meterBandList.add(1, meterBH1);
207 meterBandList.add(2, meterBH2);
209 // Constructing List of Bands
210 MeterBandHeadersBuilder meterBandHeadersBuilder = new MeterBandHeadersBuilder();
211 meterBandHeadersBuilder.setMeterBandHeader(meterBandList);
213 MeterBandHeaders meterBandHeaders = meterBandHeadersBuilder.build();
215 AddMeterInputBuilder addMeterFromSAL = new AddMeterInputBuilder();
217 addMeterFromSAL.setMeterBandHeaders(meterBandHeaders); // MeterBands
222 // NodeKey key = new NodeKey(new NodeId("24"));
223 // InstanceIdentifier<Node> path =
224 // InstanceIdentifier.builder().node(Nodes.class).node(Node.class,
225 // key).toInstance();
228 .setMeterId(new org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterId(10L));
231 AddMeterInput meterInputCommand = addMeterFromSAL.build();
232 MeterModInput outMeterModInput = MeterConvertor.toMeterModInput(meterInputCommand, (short) 0X4);
234 Assert.assertEquals(MeterModCommand.OFPMCADD, outMeterModInput.getCommand());
235 Assert.assertFalse(outMeterModInput.getFlags().isOFPMFBURST());
236 Assert.assertTrue(outMeterModInput.getFlags().isOFPMFPKTPS());
237 Assert.assertEquals(temp, outMeterModInput.getMeterId().getValue());
238 // BandInformation starts here:
240 List<Bands> bands = outMeterModInput.getBands();
241 for (Bands currentBand : bands) {
242 MeterBand meterBand = currentBand.getMeterBand();
243 if (meterBand instanceof MeterBandDrop) {
246 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType.OFPMBTDROP,
247 ((MeterBandDrop) meterBand).getType());
248 Assert.assertEquals((long) 20, (long) ((MeterBandDrop) meterBand).getBurstSize());
249 Assert.assertEquals((long) 10, (long) ((MeterBandDrop) meterBand).getRate());
252 if (meterBand instanceof MeterBandDscpRemark) {
254 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType.OFPMBTDSCPREMARK,
255 ((MeterBandDscpRemark) meterBand).getType());
256 Assert.assertEquals((long) 11, (long) ((MeterBandDscpRemark) meterBand).getBurstSize());
257 Assert.assertEquals((long) 21, (long) ((MeterBandDscpRemark) meterBand).getRate());
258 Assert.assertEquals((short) 1, (short) ((MeterBandDscpRemark) meterBand).getPrecLevel());
261 if (meterBand instanceof MeterBandExperimenter) {
263 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType.OFPMBTEXPERIMENTER,
264 ((MeterBandExperimenter) meterBand).getType());
265 Assert.assertEquals((long) 12, (long) ((MeterBandExperimenter) meterBand).getBurstSize());
266 Assert.assertEquals((long) 22, (long) ((MeterBandExperimenter) meterBand).getRate());
267 Assert.assertEquals((long) 23, (long) ((MeterBandExperimenter) meterBand).getExperimenter());
275 public void testMeterModCommandConvertorBandDataisNULL() {
278 AddMeterInputBuilder addMeterFromSAL = new AddMeterInputBuilder();
282 // NodeKey key = new NodeKey(new NodeId("24"));
283 // InstanceIdentifier<Node> path =
284 // InstanceIdentifier.builder().node(Nodes.class).node(Node.class,
285 // key).toInstance();
288 .setMeterId(new org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterId(10L));
289 MeterFlags flagV = new MeterFlags(true, true, true, true);
290 addMeterFromSAL.setFlags(flagV);
292 AddMeterInput meterInputCommand = addMeterFromSAL.build();
293 MeterModInput outMeterModInput = MeterConvertor.toMeterModInput(meterInputCommand, (short) 0X4);
295 Assert.assertEquals(MeterModCommand.OFPMCADD, outMeterModInput.getCommand());
296 Assert.assertTrue(outMeterModInput.getFlags().isOFPMFBURST());
297 Assert.assertEquals(temp, outMeterModInput.getMeterId().getValue());
301 public void testMeterModCommandConvertorNoValidBandData() {
304 MeterBandHeaderBuilder meterBandHeaderBuilder = new MeterBandHeaderBuilder();
305 MeterBandTypesBuilder meterBandTypesB = new MeterBandTypesBuilder();
307 MeterBandType bandFlag = new MeterBandType(true, false, false);
308 meterBandTypesB.setFlags(bandFlag);// _ofpmbtDrop
310 meterBandHeaderBuilder.setMeterBandTypes(meterBandTypesB.build());
312 MeterBandHeader meterBH = meterBandHeaderBuilder.build();
315 MeterBandHeaderBuilder meterBandHeaderBuilder1 = new MeterBandHeaderBuilder();
316 MeterBandTypesBuilder meterBandTypesB1 = new MeterBandTypesBuilder();
317 MeterBandType bandFlag1 = new MeterBandType(false, true, false);
319 meterBandTypesB1.setFlags(bandFlag1);
320 DscpRemarkBuilder dscp = new DscpRemarkBuilder();
321 dscp.setBurstSize(11L);
323 dscp.setPercLevel((short) 1);
324 DscpRemark dscpRemark = dscp.build();
325 meterBandHeaderBuilder1.setBandType(dscpRemark);
326 meterBandHeaderBuilder1.setMeterBandTypes(meterBandTypesB1.build());
328 MeterBandHeader meterBH1 = meterBandHeaderBuilder1.build();
332 MeterBandHeaderBuilder meterBandHeaderBuilder2 = new MeterBandHeaderBuilder();
333 MeterBandTypesBuilder meterBandTypesB2 = new MeterBandTypesBuilder();
336 ExperimenterBuilder exp = new ExperimenterBuilder();
337 exp.setBurstSize(12L);
339 exp.setExperimenter(23L);
340 Experimenter experimenter = exp.build();
341 meterBandHeaderBuilder2.setBandType(experimenter);
342 meterBandHeaderBuilder2.setMeterBandTypes(meterBandTypesB2.build());
343 MeterBandHeader meterBH2 = meterBandHeaderBuilder2.build();
345 List<MeterBandHeader> meterBandList = new ArrayList<MeterBandHeader>();
346 meterBandList.add(0, meterBH);
347 meterBandList.add(1, meterBH1);
348 meterBandList.add(2, meterBH2);
350 // Constructing List of Bands
351 MeterBandHeadersBuilder meterBandHeadersBuilder = new MeterBandHeadersBuilder();
352 meterBandHeadersBuilder.setMeterBandHeader(meterBandList);
354 MeterBandHeaders meterBandHeaders = meterBandHeadersBuilder.build();
356 AddMeterInputBuilder addMeterFromSAL = new AddMeterInputBuilder();
358 addMeterFromSAL.setMeterBandHeaders(meterBandHeaders); // MeterBands
363 // NodeKey key = new NodeKey(new NodeId("24"));
364 // InstanceIdentifier<Node> path =
365 // InstanceIdentifier.builder().node(Nodes.class).node(Node.class,
366 // key).toInstance();
369 .setMeterId(new org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterId(10L));
370 MeterFlags flagV = new MeterFlags(true, true, true, true);
371 addMeterFromSAL.setFlags(flagV);
373 AddMeterInput meterInputCommand = addMeterFromSAL.build();
374 MeterModInput outMeterModInput = MeterConvertor.toMeterModInput(meterInputCommand, (short) 0X4);
376 Assert.assertEquals(MeterModCommand.OFPMCADD, outMeterModInput.getCommand());
377 Assert.assertTrue(outMeterModInput.getFlags().isOFPMFBURST());
378 Assert.assertEquals(temp, outMeterModInput.getMeterId().getValue());
379 // BandInformation starts here:
381 List<Bands> bands = outMeterModInput.getBands();
382 for (Bands currentBand : bands) {
383 MeterBand meterBand = currentBand.getMeterBand();
384 if (meterBand instanceof MeterBandDrop) {
387 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType.OFPMBTDROP,
388 ((MeterBandDrop) meterBand).getType());
389 Assert.assertEquals((long) 20, (long) ((MeterBandDrop) meterBand).getBurstSize());
390 Assert.assertEquals((long) 10, (long) ((MeterBandDrop) meterBand).getRate());
393 if (meterBand instanceof MeterBandDscpRemark) {
395 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType.OFPMBTDSCPREMARK,
396 ((MeterBandDscpRemark) meterBand).getType());
397 Assert.assertEquals((long) 11, (long) ((MeterBandDscpRemark) meterBand).getBurstSize());
398 Assert.assertEquals((long) 21, (long) ((MeterBandDscpRemark) meterBand).getRate());
399 Assert.assertEquals((short) 1, (short) ((MeterBandDscpRemark) meterBand).getPrecLevel());
402 if (meterBand instanceof MeterBandExperimenter) {
404 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType.OFPMBTEXPERIMENTER,
405 ((MeterBandExperimenter) meterBand).getType());
406 Assert.assertEquals((long) 12, (long) ((MeterBandExperimenter) meterBand).getBurstSize());
407 Assert.assertEquals((long) 22, (long) ((MeterBandExperimenter) meterBand).getRate());
408 Assert.assertEquals((long) 23, (long) ((MeterBandExperimenter) meterBand).getExperimenter());