2 * Copyright (c) 2015 NetIDE Consortium and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.openflowjava.protocol.impl.deserialization.factories;
10 import io.netty.buffer.ByteBuf;
11 import java.util.ArrayList;
12 import java.util.List;
13 import org.junit.Assert;
14 import org.junit.Before;
15 import org.junit.Test;
16 import org.opendaylight.openflowjava.protocol.api.extensibility.DeserializerRegistry;
17 import org.opendaylight.openflowjava.protocol.api.extensibility.OFDeserializer;
18 import org.opendaylight.openflowjava.protocol.api.keys.MessageCodeKey;
19 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
20 import org.opendaylight.openflowjava.protocol.impl.deserialization.DeserializerRegistryImpl;
21 import org.opendaylight.openflowjava.protocol.impl.util.BufferHelper;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterFlags;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterId;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterModCommand;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MeterModInput;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandDropCaseBuilder;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandDscpRemarkCaseBuilder;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.meter.band.drop._case.MeterBandDropBuilder;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.meter.band.dscp.remark._case.MeterBandDscpRemarkBuilder;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.mod.Bands;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.mod.BandsBuilder;
35 * @author giuseppex.petralia@intel.com
38 public class MeterModInputMessageFactoryTest {
40 private OFDeserializer<MeterModInput> factory;
43 public void startUp() {
44 DeserializerRegistry desRegistry = new DeserializerRegistryImpl();
47 .getDeserializer(new MessageCodeKey(EncodeConstants.OF13_VERSION_ID, 29, MeterModInput.class));
53 ByteBuf bb = BufferHelper.buildBuffer("00 01 00 03 00 00 08 c8 00 "
54 + "01 00 10 00 00 00 01 00 00 00 02 00 00 00 " + "00 00 02 00 10 00 00 00 01 00 00 00 02 03 00 00 00");
55 MeterModInput deserializedMessage = BufferHelper.deserialize(factory, bb);
56 BufferHelper.checkHeaderV13(deserializedMessage);
58 Assert.assertEquals("Wrong command", MeterModCommand.forValue(1), deserializedMessage.getCommand());
59 Assert.assertEquals("Wrong flags", new MeterFlags(false, true, true, false), deserializedMessage.getFlags());
60 Assert.assertEquals("Wrong meter id", new MeterId(2248L), deserializedMessage.getMeterId());
61 Assert.assertEquals("Wrong band", createBandsList().get(0), deserializedMessage.getBands().get(0));
62 Assert.assertEquals("Wrong band", createBandsList().get(1), deserializedMessage.getBands().get(1));
65 private static List<Bands> createBandsList() {
66 List<Bands> bandsList = new ArrayList<>();
67 BandsBuilder bandsBuilder = new BandsBuilder();
68 MeterBandDropCaseBuilder dropCaseBuilder = new MeterBandDropCaseBuilder();
69 MeterBandDropBuilder dropBand = new MeterBandDropBuilder();
70 dropBand.setType(MeterBandType.OFPMBTDROP);
72 dropBand.setBurstSize(2L);
73 dropCaseBuilder.setMeterBandDrop(dropBand.build());
74 bandsList.add(bandsBuilder.setMeterBand(dropCaseBuilder.build()).build());
75 MeterBandDscpRemarkCaseBuilder dscpCaseBuilder = new MeterBandDscpRemarkCaseBuilder();
76 MeterBandDscpRemarkBuilder dscpRemarkBand = new MeterBandDscpRemarkBuilder();
77 dscpRemarkBand.setType(MeterBandType.OFPMBTDSCPREMARK);
78 dscpRemarkBand.setRate(1L);
79 dscpRemarkBand.setBurstSize(2L);
80 dscpRemarkBand.setPrecLevel((short) 3);
81 dscpCaseBuilder.setMeterBandDscpRemark(dscpRemarkBand.build());
82 bandsList.add(bandsBuilder.setMeterBand(dscpCaseBuilder.build()).build());