import java.math.BigInteger;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
+import java.util.Optional;
import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion;
+import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager;
import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.FlowStatsResponseConvertor;
import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.GroupStatsResponseConvertor;
-import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.MeterStatsResponseConvertor;
import org.opendaylight.openflowplugin.openflow.md.util.InventoryDataServiceUtil;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Counter32;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Counter64;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterKbps;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterPktps;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterStats;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.config.stats.reply.MeterConfigStats;
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.statistics.types.rev130925.duration.DurationBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.statistics.types.rev130925.node.connector.statistics.BytesBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.statistics.types.rev130925.node.connector.statistics.PacketsBuilder;
private static FlowStatsResponseConvertor flowStatsConvertor = new FlowStatsResponseConvertor();
private static GroupStatsResponseConvertor groupStatsConvertor = new GroupStatsResponseConvertor();
- private static MeterStatsResponseConvertor meterStatsConvertor = new MeterStatsResponseConvertor();
public List<DataObject> translate(final BigInteger datapathId, final short version, final OfHeader msg) {
List<DataObject> listDataObject = new ArrayList<>();
- OpenflowVersion ofVersion = OpenflowVersion.get(version);
-
if (msg instanceof MultipartReplyMessage) {
MultipartReplyMessage mpReply = (MultipartReplyMessage) msg;
- NodeId node = SinglePurposeMultipartReplyTranslator.nodeIdFromDatapathId(datapathId);
+ OpenflowVersion ofVersion = OpenflowVersion.get(version);
+ NodeId node = nodeIdFromDatapathId(datapathId);
translateFlow(listDataObject, mpReply, node, ofVersion, datapathId);
translateAggregate(listDataObject, mpReply, node);
MultipartReplyMeterCase caseBody = (MultipartReplyMeterCase) mpReply.getMultipartReplyBody();
MultipartReplyMeter replyBody = caseBody.getMultipartReplyMeter();
- message.setMeterStats(meterStatsConvertor.toSALMeterStatsList(replyBody.getMeterStats()));
+ final Optional<List<org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.statistics.reply.MeterStats>> meterStatsList =
+ ConvertorManager.getInstance().convert(replyBody.getMeterStats());
+
+ message.setMeterStats(meterStatsList.orElse(Collections.emptyList()));
listDataObject.add(message.build());
}
MultipartReplyMeterConfigCase caseBody = (MultipartReplyMeterConfigCase) mpReply.getMultipartReplyBody();
MultipartReplyMeterConfig replyBody = caseBody.getMultipartReplyMeterConfig();
- message.setMeterConfigStats(meterStatsConvertor.toSALMeterConfigList(replyBody.getMeterConfig()));
+ final Optional<List<MeterConfigStats>> meterConfigStatsList = ConvertorManager.getInstance().convert(replyBody.getMeterConfig());
+
+ message.setMeterConfigStats(meterConfigStatsList.orElse(Collections.emptyList()));
listDataObject.add(message.build());
}
import java.util.ArrayList;
import java.util.List;
+import java.util.Optional;
import java.util.concurrent.atomic.AtomicLong;
import org.opendaylight.openflowjava.protocol.api.util.BinContent;
import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext;
import org.opendaylight.openflowplugin.api.openflow.device.Xid;
import org.opendaylight.openflowplugin.impl.services.RequestInputUtils;
import org.opendaylight.openflowplugin.impl.statistics.services.compatibility.AbstractCompatibleStatService;
-import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.MeterStatsResponseConvertor;
+import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetAllMeterConfigStatisticsInput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.GetAllMeterConfigStatisticsOutput;
extends AbstractCompatibleStatService<GetAllMeterConfigStatisticsInput, GetAllMeterConfigStatisticsOutput, MeterConfigStatsUpdated> {
private static final MultipartRequestMeterConfigCase METER_CONFIG_CASE;
- private static MeterStatsResponseConvertor meterStatsConvertor = new MeterStatsResponseConvertor();
static {
for (MultipartReply mpReply : result) {
MultipartReplyMeterConfigCase caseBody = (MultipartReplyMeterConfigCase) mpReply.getMultipartReplyBody();
MultipartReplyMeterConfig replyBody = caseBody.getMultipartReplyMeterConfig();
- message.getMeterConfigStats().addAll(meterStatsConvertor.toSALMeterConfigList(replyBody.getMeterConfig()));
+ final Optional<List<MeterConfigStats>> meterConfigStatsList = ConvertorManager.getInstance().convert(replyBody.getMeterConfig());
+
+ if (meterConfigStatsList.isPresent()) {
+ message.getMeterConfigStats().addAll(meterConfigStatsList.get());
+ }
}
return message.build();
}
-}
+}
\ No newline at end of file
import java.util.ArrayList;
import java.util.List;
+import java.util.Optional;
import org.opendaylight.openflowplugin.api.openflow.device.DeviceInfo;
import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion;
-import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.MeterStatsResponseConvertor;
+import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.MeterStatisticsUpdated;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.MeterStatisticsUpdatedBuilder;
*/
public class MeterStatisticsToNotificationTransformer {
- private static MeterStatsResponseConvertor meterStatsConvertor = new MeterStatsResponseConvertor();
-
/**
* @param mpReplyList raw multipart response from device
* @param deviceInfo device state
for (MultipartReply mpReply : mpReplyList) {
MultipartReplyMeterCase caseBody = (MultipartReplyMeterCase) mpReply.getMultipartReplyBody();
MultipartReplyMeter replyBody = caseBody.getMultipartReplyMeter();
- notification.getMeterStats().addAll(meterStatsConvertor.toSALMeterStatsList(replyBody.getMeterStats()));
+ final Optional<List<MeterStats>> meterStatsList = ConvertorManager.getInstance().convert(replyBody.getMeterStats());
+
+ if (meterStatsList.isPresent()) {
+ notification.getMeterStats().addAll(meterStatsList.get());
+ }
}
return notification.build();
import java.util.ArrayList;
import java.util.List;
+import java.util.Optional;
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
import org.opendaylight.openflowplugin.api.OFConstants;
import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext;
import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack;
-import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.MeterStatsResponseConvertor;
+import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager;
import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetMeterStatisticsInput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetMeterStatisticsOutput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.direct.statistics.rev160511.GetMeterStatisticsOutputBuilder;
* The Meter direct statistics service.
*/
public class MeterDirectStatisticsService extends AbstractDirectStatisticsService<GetMeterStatisticsInput, GetMeterStatisticsOutput> {
- private final MeterStatsResponseConvertor meterStatsConvertor = new MeterStatsResponseConvertor();
-
/**
* Instantiates a new Meter direct statistics service.
*
for (final MultipartReply mpReply : input) {
final MultipartReplyMeterCase caseBody = (MultipartReplyMeterCase) mpReply.getMultipartReplyBody();
final MultipartReplyMeter replyBody = caseBody.getMultipartReplyMeter();
- meterStats.addAll(meterStatsConvertor.toSALMeterStatsList(replyBody.getMeterStats()));
+ final Optional<List<MeterStats>> meterStatsList = ConvertorManager.getInstance().convert(replyBody.getMeterStats());
+
+ if (meterStatsList.isPresent()) {
+ meterStats.addAll(meterStatsList.get());
+ }
}
}
INSTANCE.registerConvertor(new TableFeaturesConvertor());
INSTANCE.registerConvertor(new TableFeaturesResponseConvertor());
INSTANCE.registerConvertor(new MeterConvertor());
+ INSTANCE.registerConvertor(new MeterStatsResponseConvertor());
+ INSTANCE.registerConvertor(new MeterConfigStatsResponseConvertor());
}
// Actual convertor keys
--- /dev/null
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. 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 java.util.ArrayList;
+import java.util.List;
+import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.Convertor;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.BandId;
+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.MeterId;
+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.DscpRemarkBuilder;
+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.MeterBandHeadersBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.config.stats.reply.MeterConfigStats;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.config.stats.reply.MeterConfigStatsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.config.stats.reply.MeterConfigStatsKey;
+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.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.band.header.meter.band.meter.band.drop._case.MeterBandDrop;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.meter.band.dscp.remark._case.MeterBandDscpRemark;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.meter.band.experimenter._case.MeterBandExperimenter;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.meter.config._case.multipart.reply.meter.config.MeterConfig;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.meter.config._case.multipart.reply.meter.config.meter.config.Bands;
+
+/**
+ * Converts list of OF library config meter stats to MD-SAL config meter stats.
+ *
+ * Example usage:
+ * <pre>
+ * {@code
+ * Optional<List<MeterConfigStats>> salMeterConfigStats = ConvertorManager.getInstance().convert(
+ * ofMeterConfigStats);
+ * }
+ * </pre>
+ */
+public class MeterConfigStatsResponseConvertor implements Convertor<List<MeterConfig>, List<MeterConfigStats>> {
+
+ @Override
+ public Class<?> getType() {
+ return MeterConfig.class;
+ }
+
+ @Override
+ public List<MeterConfigStats> convert(List<MeterConfig> source) {
+ List<MeterConfigStats> listMeterConfigStats = new ArrayList<>();
+
+ for (MeterConfig meterConfig : source) {
+ MeterConfigStatsBuilder meterConfigStatsBuilder = new MeterConfigStatsBuilder();
+ meterConfigStatsBuilder.setMeterId(new MeterId(meterConfig.getMeterId().getValue()));
+ meterConfigStatsBuilder.setKey(new MeterConfigStatsKey(meterConfigStatsBuilder.getMeterId()));
+ MeterBandHeadersBuilder meterBandHeadersBuilder = new MeterBandHeadersBuilder();
+ List<Bands> bands = meterConfig.getBands();
+
+ MeterFlags meterFlags = new MeterFlags(meterConfig.getFlags().isOFPMFBURST(),
+ meterConfig.getFlags().isOFPMFKBPS(),
+ meterConfig.getFlags().isOFPMFPKTPS(),
+ meterConfig.getFlags().isOFPMFSTATS());
+
+ meterConfigStatsBuilder.setFlags(meterFlags);
+ List<MeterBandHeader> listBandHeaders = new ArrayList<>();
+ int bandKey = 0;
+
+ for (Bands band : bands) {
+ MeterBandHeaderBuilder meterBandHeaderBuilder = new MeterBandHeaderBuilder();
+ if (band.getMeterBand() instanceof MeterBandDropCase) {
+ MeterBandDropCase dropCaseBand = (MeterBandDropCase) band.getMeterBand();
+ MeterBandDrop dropBand = dropCaseBand.getMeterBandDrop();
+ DropBuilder dropBuilder = new DropBuilder();
+ dropBuilder.setDropBurstSize(dropBand.getBurstSize());
+ dropBuilder.setDropRate(dropBand.getRate());
+ meterBandHeaderBuilder.setBandType(dropBuilder.build());
+
+ meterBandHeaderBuilder.setBandBurstSize(dropBand.getBurstSize());
+ meterBandHeaderBuilder.setBandRate(dropBand.getRate());
+ BandId bandId = new BandId((long) bandKey);
+ meterBandHeaderBuilder.setKey(new MeterBandHeaderKey(bandId));
+ meterBandHeaderBuilder.setBandId(bandId);
+
+ MeterBandTypesBuilder meterBandTypesBuilder = new MeterBandTypesBuilder();
+ meterBandTypesBuilder.setFlags(new MeterBandType(true, false, false));
+ meterBandHeaderBuilder.setMeterBandTypes(meterBandTypesBuilder.build());
+
+ listBandHeaders.add(meterBandHeaderBuilder.build());
+ } else if (band.getMeterBand() instanceof MeterBandDscpRemarkCase) {
+ MeterBandDscpRemarkCase dscpRemarkCaseBand = (MeterBandDscpRemarkCase) band.getMeterBand();
+ MeterBandDscpRemark dscpRemarkBand = dscpRemarkCaseBand.getMeterBandDscpRemark();
+ DscpRemarkBuilder dscpRemarkBuilder = new DscpRemarkBuilder();
+ dscpRemarkBuilder.setDscpRemarkBurstSize(dscpRemarkBand.getBurstSize());
+ dscpRemarkBuilder.setDscpRemarkRate(dscpRemarkBand.getRate());
+ dscpRemarkBuilder.setPrecLevel(dscpRemarkBand.getPrecLevel());
+ meterBandHeaderBuilder.setBandType(dscpRemarkBuilder.build());
+
+ meterBandHeaderBuilder.setBandBurstSize(dscpRemarkBand.getBurstSize());
+ meterBandHeaderBuilder.setBandRate(dscpRemarkBand.getRate());
+ BandId bandId = new BandId((long) bandKey);
+ meterBandHeaderBuilder.setKey(new MeterBandHeaderKey(bandId));
+ meterBandHeaderBuilder.setBandId(bandId);
+
+ MeterBandTypesBuilder meterBandTypesBuilder = new MeterBandTypesBuilder();
+ meterBandTypesBuilder.setFlags(new MeterBandType(false, true, false));
+ meterBandHeaderBuilder.setMeterBandTypes(meterBandTypesBuilder.build());
+ listBandHeaders.add(meterBandHeaderBuilder.build());
+
+ } else if (band.getMeterBand() instanceof MeterBandExperimenterCase) {
+ MeterBandExperimenterCase experimenterCaseBand = (MeterBandExperimenterCase) band.getMeterBand();
+ MeterBandExperimenter experimenterBand = experimenterCaseBand.getMeterBandExperimenter();
+ ExperimenterBuilder experimenterBuilder = new ExperimenterBuilder();
+ experimenterBuilder.setExperimenterBurstSize(experimenterBand.getBurstSize());
+ experimenterBuilder.setExperimenterRate(experimenterBand.getRate());
+ meterBandHeaderBuilder.setBandType(experimenterBuilder.build());
+
+ meterBandHeaderBuilder.setBandBurstSize(experimenterBand.getBurstSize());
+ meterBandHeaderBuilder.setBandRate(experimenterBand.getRate());
+ BandId bandId = new BandId((long) bandKey);
+ meterBandHeaderBuilder.setKey(new MeterBandHeaderKey(bandId));
+ meterBandHeaderBuilder.setBandId(bandId);
+
+ MeterBandTypesBuilder meterBandTypesBuilder = new MeterBandTypesBuilder();
+ meterBandTypesBuilder.setFlags(new MeterBandType(false, false, true));
+ meterBandHeaderBuilder.setMeterBandTypes(meterBandTypesBuilder.build());
+
+ listBandHeaders.add(meterBandHeaderBuilder.build());
+
+ }
+
+ bandKey++;
+ }
+
+ meterBandHeadersBuilder.setMeterBandHeader(listBandHeaders);
+ meterConfigStatsBuilder.setMeterBandHeaders(meterBandHeadersBuilder.build());
+ listMeterConfigStats.add(meterConfigStatsBuilder.build());
+ }
+
+ return listMeterConfigStats;
+ }
+}
\ No newline at end of file
import java.util.List;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Counter32;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Counter64;
+import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.Convertor;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.BandId;
-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.MeterId;
-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.DscpRemarkBuilder;
-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.MeterBandHeadersBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.config.stats.reply.MeterConfigStats;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.config.stats.reply.MeterConfigStatsBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.config.stats.reply.MeterConfigStatsKey;
-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.meter.types.rev130918.meter.statistics.DurationBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.statistics.MeterBandStatsBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.statistics.meter.band.stats.BandStat;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.statistics.reply.MeterStats;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.statistics.reply.MeterStatsBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.statistics.reply.MeterStatsKey;
-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.band.header.meter.band.meter.band.drop._case.MeterBandDrop;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.meter.band.dscp.remark._case.MeterBandDscpRemark;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.meter.band.experimenter._case.MeterBandExperimenter;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.meter._case.multipart.reply.meter.meter.stats.MeterBandStats;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.meter.config._case.multipart.reply.meter.config.MeterConfig;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.meter.config._case.multipart.reply.meter.config.meter.config.Bands;
/**
- * Class is an utility class for converting group related statistics messages coming from switch to MD-SAL
- * messages.
+ * Converts list of OF library meter stats to MD-SAL meter stats.
*
- * @author avishnoi@in.ibm.com
+ * Example usage:
+ * <pre>
+ * {@code
+ * Optional<List<MeterStats>> salMeterStats = ConvertorManager.getInstance().convert(
+ * ofMeterStats);
+ * }
+ * </pre>
*/
-public class MeterStatsResponseConvertor {
-
- /**
- * Method converts list of OF Meter Stats to SAL Meter Stats.
- *
- * @param allMeterStats all meter stats
- * @return List of MeterStats
- */
- public List<MeterStats> toSALMeterStatsList(
- List<org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply
- .multipart.reply.body.multipart.reply.meter._case.multipart.reply.meter.MeterStats> allMeterStats) {
- List<MeterStats> convertedSALMeters = new ArrayList<MeterStats>();
- for (org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.
- multipart.reply.body.multipart.reply.meter._case.multipart.reply.meter.MeterStats meter : allMeterStats) {
- convertedSALMeters.add(toSALMeterStats(meter));
- }
- return convertedSALMeters;
-
+public class MeterStatsResponseConvertor implements Convertor<
+ List<org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply
+ .multipart.reply.body.multipart.reply.meter._case.multipart.reply.meter.MeterStats>,
+ List<MeterStats>> {
+
+ @Override
+ public Class<?> getType() {
+ return org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.meter._case.multipart.reply.meter.MeterStats.class;
}
- /**
- * Method convert MeterStats message from library to MD SAL defined MeterStats
- *
- * @param meterStats MeterStats from library
- * @return MeterStats -- MeterStats defined in MD-SAL
- */
- public MeterStats toSALMeterStats(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply
- .multipart.reply.body.multipart.reply.meter._case.multipart.reply.meter.MeterStats meterStats) {
-
- MeterStatsBuilder salMeterStats = new MeterStatsBuilder();
- salMeterStats.setByteInCount(new Counter64(meterStats.getByteInCount()));
+ @Override
+ public List<MeterStats> convert(List<org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.meter._case.multipart.reply.meter.MeterStats> source) {
+ List<MeterStats> convertedSALMeters = new ArrayList<>();
- DurationBuilder time = new DurationBuilder();
- time.setSecond(new Counter32(meterStats.getDurationSec()));
- time.setNanosecond(new Counter32(meterStats.getDurationNsec()));
- salMeterStats.setDuration(time.build());
-
- salMeterStats.setFlowCount(new Counter32(meterStats.getFlowCount()));
- salMeterStats.setMeterId(new MeterId(meterStats.getMeterId().getValue()));
- salMeterStats.setPacketInCount(new Counter64(meterStats.getPacketInCount()));
- salMeterStats.setKey(new MeterStatsKey(salMeterStats.getMeterId()));
-
- List<MeterBandStats> allMeterBandStats = meterStats.getMeterBandStats();
-
- MeterBandStatsBuilder meterBandStatsBuilder = new MeterBandStatsBuilder();
- List<BandStat> listAllBandStats = new ArrayList<BandStat>();
- int bandKey = 0;
- for (MeterBandStats meterBandStats : allMeterBandStats) {
- BandStatBuilder bandStatBuilder = new BandStatBuilder();
- bandStatBuilder.setByteBandCount(new Counter64(meterBandStats.getByteBandCount()));
- bandStatBuilder.setPacketBandCount(new Counter64(meterBandStats.getPacketBandCount()));
- BandId bandId = new BandId((long) bandKey);
- bandStatBuilder.setKey(new BandStatKey(bandId));
- bandStatBuilder.setBandId(bandId);
- bandKey++;
- listAllBandStats.add(bandStatBuilder.build());
- }
- meterBandStatsBuilder.setBandStat(listAllBandStats);
- salMeterStats.setMeterBandStats(meterBandStatsBuilder.build());
- return salMeterStats.build();
- }
+ for (org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.
+ multipart.reply.body.multipart.reply.meter._case.multipart.reply.meter.MeterStats meterStats : source) {
+ // Convert MeterStats message from library to MD SAL defined MeterStats
+ MeterStatsBuilder salMeterStats = new MeterStatsBuilder();
+ salMeterStats.setByteInCount(new Counter64(meterStats.getByteInCount()));
- /**
- * Method convert list of OF Meter config Stats to SAL Meter Config stats
- *
- * @param allMeterConfigs all meter configs
- * @return list of MeterConfigStats
- */
- public List<MeterConfigStats> toSALMeterConfigList(List<MeterConfig> allMeterConfigs) {
+ DurationBuilder time = new DurationBuilder();
+ time.setSecond(new Counter32(meterStats.getDurationSec()));
+ time.setNanosecond(new Counter32(meterStats.getDurationNsec()));
+ salMeterStats.setDuration(time.build());
- List<MeterConfigStats> listMeterConfigStats = new ArrayList<MeterConfigStats>();
- for (MeterConfig meterConfig : allMeterConfigs) {
- MeterConfigStatsBuilder meterConfigStatsBuilder = new MeterConfigStatsBuilder();
- meterConfigStatsBuilder.setMeterId(new MeterId(meterConfig.getMeterId().getValue()));
- meterConfigStatsBuilder.setKey(new MeterConfigStatsKey(meterConfigStatsBuilder.getMeterId()));
+ salMeterStats.setFlowCount(new Counter32(meterStats.getFlowCount()));
+ salMeterStats.setMeterId(new MeterId(meterStats.getMeterId().getValue()));
+ salMeterStats.setPacketInCount(new Counter64(meterStats.getPacketInCount()));
+ salMeterStats.setKey(new MeterStatsKey(salMeterStats.getMeterId()));
- MeterBandHeadersBuilder meterBandHeadersBuilder = new MeterBandHeadersBuilder();
- List<Bands> bands = meterConfig.getBands();
+ List<MeterBandStats> allMeterBandStats = meterStats.getMeterBandStats();
- MeterFlags meterFlags = new MeterFlags(meterConfig.getFlags().isOFPMFBURST(),
- meterConfig.getFlags().isOFPMFKBPS(),
- meterConfig.getFlags().isOFPMFPKTPS(),
- meterConfig.getFlags().isOFPMFSTATS());
- meterConfigStatsBuilder.setFlags(meterFlags);
- List<MeterBandHeader> listBandHeaders = new ArrayList<MeterBandHeader>();
+ MeterBandStatsBuilder meterBandStatsBuilder = new MeterBandStatsBuilder();
+ List<BandStat> listAllBandStats = new ArrayList<>();
int bandKey = 0;
- for (Bands band : bands) {
- MeterBandHeaderBuilder meterBandHeaderBuilder = new MeterBandHeaderBuilder();
- if (band.getMeterBand() instanceof MeterBandDropCase) {
- MeterBandDropCase dropCaseBand = (MeterBandDropCase) band.getMeterBand();
- MeterBandDrop dropBand = dropCaseBand.getMeterBandDrop();
- DropBuilder dropBuilder = new DropBuilder();
- dropBuilder.setDropBurstSize(dropBand.getBurstSize());
- dropBuilder.setDropRate(dropBand.getRate());
- meterBandHeaderBuilder.setBandType(dropBuilder.build());
- meterBandHeaderBuilder.setBandBurstSize(dropBand.getBurstSize());
- meterBandHeaderBuilder.setBandRate(dropBand.getRate());
- BandId bandId = new BandId((long) bandKey);
- meterBandHeaderBuilder.setKey(new MeterBandHeaderKey(bandId));
- meterBandHeaderBuilder.setBandId(bandId);
-
- MeterBandTypesBuilder meterBandTypesBuilder = new MeterBandTypesBuilder();
- meterBandTypesBuilder.setFlags(new MeterBandType(true, false, false));
- meterBandHeaderBuilder.setMeterBandTypes(meterBandTypesBuilder.build());
-
- listBandHeaders.add(meterBandHeaderBuilder.build());
- } else if (band.getMeterBand() instanceof MeterBandDscpRemarkCase) {
- MeterBandDscpRemarkCase dscpRemarkCaseBand = (MeterBandDscpRemarkCase) band.getMeterBand();
- MeterBandDscpRemark dscpRemarkBand = dscpRemarkCaseBand.getMeterBandDscpRemark();
- DscpRemarkBuilder dscpRemarkBuilder = new DscpRemarkBuilder();
- dscpRemarkBuilder.setDscpRemarkBurstSize(dscpRemarkBand.getBurstSize());
- dscpRemarkBuilder.setDscpRemarkRate(dscpRemarkBand.getRate());
- dscpRemarkBuilder.setPrecLevel(dscpRemarkBand.getPrecLevel());
- meterBandHeaderBuilder.setBandType(dscpRemarkBuilder.build());
-
- meterBandHeaderBuilder.setBandBurstSize(dscpRemarkBand.getBurstSize());
- meterBandHeaderBuilder.setBandRate(dscpRemarkBand.getRate());
- BandId bandId = new BandId((long) bandKey);
- meterBandHeaderBuilder.setKey(new MeterBandHeaderKey(bandId));
- meterBandHeaderBuilder.setBandId(bandId);
-
- MeterBandTypesBuilder meterBandTypesBuilder = new MeterBandTypesBuilder();
- meterBandTypesBuilder.setFlags(new MeterBandType(false, true, false));
- meterBandHeaderBuilder.setMeterBandTypes(meterBandTypesBuilder.build());
- listBandHeaders.add(meterBandHeaderBuilder.build());
-
- } else if (band.getMeterBand() instanceof MeterBandExperimenterCase) {
- MeterBandExperimenterCase experimenterCaseBand = (MeterBandExperimenterCase) band.getMeterBand();
- MeterBandExperimenter experimenterBand = experimenterCaseBand.getMeterBandExperimenter();
- ExperimenterBuilder experimenterBuilder = new ExperimenterBuilder();
- experimenterBuilder.setExperimenterBurstSize(experimenterBand.getBurstSize());
- experimenterBuilder.setExperimenterRate(experimenterBand.getRate());
- meterBandHeaderBuilder.setBandType(experimenterBuilder.build());
-
- meterBandHeaderBuilder.setBandBurstSize(experimenterBand.getBurstSize());
- meterBandHeaderBuilder.setBandRate(experimenterBand.getRate());
- BandId bandId = new BandId((long) bandKey);
- meterBandHeaderBuilder.setKey(new MeterBandHeaderKey(bandId));
- meterBandHeaderBuilder.setBandId(bandId);
-
- MeterBandTypesBuilder meterBandTypesBuilder = new MeterBandTypesBuilder();
- meterBandTypesBuilder.setFlags(new MeterBandType(false, false, true));
- meterBandHeaderBuilder.setMeterBandTypes(meterBandTypesBuilder.build());
-
- listBandHeaders.add(meterBandHeaderBuilder.build());
-
- }
+ for (MeterBandStats meterBandStats : allMeterBandStats) {
+ BandStatBuilder bandStatBuilder = new BandStatBuilder();
+ bandStatBuilder.setByteBandCount(new Counter64(meterBandStats.getByteBandCount()));
+ bandStatBuilder.setPacketBandCount(new Counter64(meterBandStats.getPacketBandCount()));
+ BandId bandId = new BandId((long) bandKey);
+ bandStatBuilder.setKey(new BandStatKey(bandId));
+ bandStatBuilder.setBandId(bandId);
bandKey++;
+ listAllBandStats.add(bandStatBuilder.build());
}
- meterBandHeadersBuilder.setMeterBandHeader(listBandHeaders);
- meterConfigStatsBuilder.setMeterBandHeaders(meterBandHeadersBuilder.build());
- listMeterConfigStats.add(meterConfigStatsBuilder.build());
+
+ meterBandStatsBuilder.setBandStat(listAllBandStats);
+ salMeterStats.setMeterBandStats(meterBandStatsBuilder.build());
+ convertedSALMeters.add(salMeterStats.build());
}
- return listMeterConfigStats;
+ return convertedSALMeters;
}
-}
+}
\ No newline at end of file
import java.math.BigInteger;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
+import java.util.Optional;
import java.util.concurrent.CopyOnWriteArrayList;
import org.opendaylight.openflowplugin.api.openflow.md.core.IMDMessageTranslator;
import org.opendaylight.openflowplugin.api.openflow.md.core.SwitchConnectionDistinguisher;
import org.opendaylight.openflowplugin.api.openflow.md.core.session.SessionContext;
import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion;
+import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager;
import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.FlowStatsResponseConvertor;
import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.GroupStatsResponseConvertor;
-import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.MeterStatsResponseConvertor;
import org.opendaylight.openflowplugin.openflow.md.util.InventoryDataServiceUtil;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Counter32;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Counter64;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterKbps;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterPktps;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterStats;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.config.stats.reply.MeterConfigStats;
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.statistics.types.rev130925.duration.DurationBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.statistics.types.rev130925.node.connector.statistics.BytesBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.statistics.types.rev130925.node.connector.statistics.PacketsBuilder;
private static FlowStatsResponseConvertor flowStatsConvertor = new FlowStatsResponseConvertor();
private static GroupStatsResponseConvertor groupStatsConvertor = new GroupStatsResponseConvertor();
- private static MeterStatsResponseConvertor meterStatsConvertor = new MeterStatsResponseConvertor();
@Override
MultipartReplyMeterCase caseBody = (MultipartReplyMeterCase)mpReply.getMultipartReplyBody();
MultipartReplyMeter replyBody = caseBody.getMultipartReplyMeter();
- message.setMeterStats(meterStatsConvertor.toSALMeterStatsList(replyBody.getMeterStats()));
+ final Optional<List<org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.statistics.reply.MeterStats>> meterStatsList =
+ ConvertorManager.getInstance().convert(replyBody.getMeterStats());
+
+ message.setMeterStats(meterStatsList.orElse(Collections.emptyList()));
listDataObject.add(message.build());
return listDataObject;
}
MultipartReplyMeterConfigCase caseBody = (MultipartReplyMeterConfigCase)mpReply.getMultipartReplyBody();
MultipartReplyMeterConfig replyBody = caseBody.getMultipartReplyMeterConfig();
- message.setMeterConfigStats(meterStatsConvertor.toSALMeterConfigList(replyBody.getMeterConfig()));
+ final Optional<List<MeterConfigStats>> meterConfigStatsList = ConvertorManager.getInstance().convert(replyBody.getMeterConfig());
+
+ message.setMeterConfigStats(meterConfigStatsList.orElse(Collections.emptyList()));
listDataObject.add(message.build());
return listDataObject;
}
--- /dev/null
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. 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.Collections;
+import java.util.List;
+import java.util.Optional;
+import org.junit.Test;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.config.stats.reply.MeterConfigStats;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterFlags;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandDropCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandDscpRemarkCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandExperimenterCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.meter.band.drop._case.MeterBandDropBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.meter.band.dscp.remark._case.MeterBandDscpRemarkBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.meter.band.experimenter._case.MeterBandExperimenterBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.meter.config._case.multipart.reply.meter.config.MeterConfig;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.meter.config._case.multipart.reply.meter.config.MeterConfigBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.meter.config._case.multipart.reply.meter.config.meter.config.Bands;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.meter.config._case.multipart.reply.meter.config.meter.config.BandsBuilder;
+import org.opendaylight.yangtools.yang.binding.DataContainer;
+
+public class MeterConfigStatsResponseConvertorTest {
+ private static final int PRESET_COUNT = 7;
+
+ private List<MeterConfig> createMeterConfigList(){
+ List<MeterConfig> meterConfigs = new ArrayList<>();
+ MeterConfigBuilder meterConfigBuilder = new MeterConfigBuilder();
+ for (int i = 0; i < PRESET_COUNT; i++) {
+ meterConfigBuilder.setMeterId(new MeterId((long) i));
+ List<Bands> bandses = new ArrayList<>();
+
+ BandsBuilder bandsBuilder = new BandsBuilder();
+ bandsBuilder.setMeterBand(new MeterBandDropCaseBuilder()
+ .setMeterBandDrop(new MeterBandDropBuilder().build()).build());
+ bandses.add(bandsBuilder.build());
+
+ bandsBuilder = new BandsBuilder();
+ bandsBuilder.setMeterBand(new MeterBandDscpRemarkCaseBuilder()
+ .setMeterBandDscpRemark(new MeterBandDscpRemarkBuilder().build()).build());
+ bandses.add(bandsBuilder.build());
+
+ bandsBuilder = new BandsBuilder();
+ bandsBuilder.setMeterBand(new MockMeterBandBuilder());
+ bandses.add(bandsBuilder.build());
+
+ bandsBuilder = new BandsBuilder();
+ bandsBuilder.setMeterBand(new MeterBandExperimenterCaseBuilder()
+ .setMeterBandExperimenter(new MeterBandExperimenterBuilder().build()).build());
+ bandses.add(bandsBuilder.build());
+
+ meterConfigBuilder.setBands(bandses);
+ meterConfigBuilder.setFlags(new MeterFlags(true, false, true, false));
+ meterConfigs.add(meterConfigBuilder.build());
+ }
+
+ return meterConfigs;
+ }
+
+ @Test
+ /**
+ * Test of basic mapping functionality of {@link MeterConfigStatsResponseConvertor#convert(java.util.List)} }
+ */
+ public void testToSALMeterConfigList() {
+ Optional<List<MeterConfigStats>> meterConfigsOptional = ConvertorManager.getInstance().convert(createMeterConfigList());
+ List<MeterConfigStats> meterConfigs = meterConfigsOptional.orElse(Collections.emptyList());
+
+ assertEquals(PRESET_COUNT, meterConfigs.size());
+ int cnt = 0;
+ for (MeterConfigStats meterConfigStats: meterConfigs){
+ assertEquals(new Long(cnt), meterConfigStats.getMeterId().getValue());
+ assertTrue(meterConfigStats.getFlags().isMeterBurst());
+ assertFalse(meterConfigStats.getFlags().isMeterKbps());
+ assertTrue(meterConfigStats.getFlags().isMeterPktps());
+ assertFalse(meterConfigStats.getFlags().isMeterStats());
+
+ cnt++;
+ }
+ }
+
+
+ private final class MockMeterBandBuilder implements org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.MeterBand {
+
+ @Override
+ public Class<? extends DataContainer> getImplementedInterface() {
+ return MockMeterBandBuilder.class;
+ }
+ }
+
+}
\ No newline at end of file
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.math.BigInteger;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
+import java.util.Optional;
import org.junit.Test;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.config.stats.reply.MeterConfigStats;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.statistics.meter.band.stats.BandStat;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.statistics.reply.MeterStats;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.statistics.reply.MeterStatsKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterFlags;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.meter._case.multipart.reply.meter.MeterStatsBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.meter._case.multipart.reply.meter.meter.stats.MeterBandStats;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.meter._case.multipart.reply.meter.meter.stats.MeterBandStatsBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.meter.config._case.multipart.reply.meter.config.MeterConfig;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.meter.config._case.multipart.reply.meter.config.MeterConfigBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.meter.config._case.multipart.reply.meter.config.meter.config.Bands;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.meter.config._case.multipart.reply.meter.config.meter.config.BandsBuilder;
-import org.opendaylight.yangtools.yang.binding.DataContainer;
-/**
- * Created by Martin Bobak mbobak@cisco.com on 9/18/14.
- */
public class MeterStatsResponseConvertorTest {
-
- private static final MeterStatsResponseConvertor METER_STATS_RESPONSE_CONVERTOR = new MeterStatsResponseConvertor();
private static final int PRESET_COUNT = 7;
return allMeterStats;
}
- private final List<MeterConfig> createMeterConfigList(){
- List<MeterConfig> meterConfigs = new ArrayList<>();
- MeterConfigBuilder meterConfigBuilder = new MeterConfigBuilder();
- for (int i = 0; i < PRESET_COUNT; i++) {
- meterConfigBuilder.setMeterId(new MeterId((long) i));
- List<Bands> bandses = new ArrayList<>();
- for (int j = 0; j < PRESET_COUNT; j++){
- BandsBuilder bandsBuilder = new BandsBuilder();
- bandsBuilder.setMeterBand(new MockMeterBandBuilder());
- bandses.add(bandsBuilder.build());
- }
- meterConfigBuilder.setBands(bandses);
- meterConfigBuilder.setFlags(new MeterFlags(true, false, true, false));
- meterConfigs.add(meterConfigBuilder.build());
- }
- return meterConfigs;
- }
@Test
/**
- * Test of basic mapping functionality of {@link MeterStatsResponseConvertor#toSALMeterStatsList(java.util.List)}
+ * Test of basic mapping functionality of {@link MeterStatsResponseConvertor#convert(java.util.List)}
*/
public void testToSALMeterStatsList() {
- List<MeterStats> meterStatsList = METER_STATS_RESPONSE_CONVERTOR.toSALMeterStatsList(createMeterStatsLit());
+ Optional<List<MeterStats>> meterStatsListOptional = ConvertorManager.getInstance().convert(createMeterStatsLit());
+ List<MeterStats> meterStatsList = meterStatsListOptional.orElse(Collections.emptyList());
assertEquals(PRESET_COUNT, meterStatsList.size());
int cnt = 0;
cnt++;
}
}
-
- @Test
- /**
- * Test of basic mapping functionality of {@link MeterStatsResponseConvertor#toSALMeterStatsList(java.util.List)}
- */
- public void testToSALMeterConfigList() {
- List<MeterConfigStats> meterConfigs = METER_STATS_RESPONSE_CONVERTOR.toSALMeterConfigList(createMeterConfigList());
- assertEquals(PRESET_COUNT, meterConfigs.size());
- int cnt = 0;
- for (MeterConfigStats meterConfigStats: meterConfigs){
- assertEquals(new Long(cnt), meterConfigStats.getMeterId().getValue());
- assertTrue(meterConfigStats.getFlags().isMeterBurst());
- assertFalse(meterConfigStats.getFlags().isMeterKbps());
- assertTrue(meterConfigStats.getFlags().isMeterPktps());
- assertFalse(meterConfigStats.getFlags().isMeterStats());
-
- cnt++;
- }
- }
-
-
- private final class MockMeterBandBuilder implements org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.MeterBand {
-
- @Override
- public Class<? extends DataContainer> getImplementedInterface() {
- return MockMeterBandBuilder.class;
- }
- }
-
-}
+}
\ No newline at end of file