2 * Copyright (c) 2016 Cisco Systems, Inc. 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
9 package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor;
11 import static org.junit.Assert.assertEquals;
12 import static org.junit.Assert.assertFalse;
13 import static org.junit.Assert.assertTrue;
15 import java.util.ArrayList;
16 import java.util.Collections;
17 import java.util.List;
18 import java.util.Optional;
19 import org.junit.Test;
20 import org.opendaylight.openflowplugin.api.OFConstants;
21 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionConvertorData;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.config.stats.reply.MeterConfigStats;
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.protocol.rev130731.meter.band.header.meter.band.MeterBandDropCaseBuilder;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandDscpRemarkCaseBuilder;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandExperimenterCaseBuilder;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.meter.band.drop._case.MeterBandDropBuilder;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.meter.band.dscp.remark._case.MeterBandDscpRemarkBuilder;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.meter.band.experimenter._case.MeterBandExperimenterBuilder;
31 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;
32 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;
33 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;
34 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;
35 import org.opendaylight.yangtools.yang.binding.DataContainer;
37 public class MeterConfigStatsResponseConvertorTest {
38 private static final int PRESET_COUNT = 7;
40 private List<MeterConfig> createMeterConfigList(){
41 List<MeterConfig> meterConfigs = new ArrayList<>();
42 MeterConfigBuilder meterConfigBuilder = new MeterConfigBuilder();
43 for (int i = 0; i < PRESET_COUNT; i++) {
44 meterConfigBuilder.setMeterId(new MeterId((long) i));
45 List<Bands> bandses = new ArrayList<>();
47 BandsBuilder bandsBuilder = new BandsBuilder();
48 bandsBuilder.setMeterBand(new MeterBandDropCaseBuilder()
49 .setMeterBandDrop(new MeterBandDropBuilder().build()).build());
50 bandses.add(bandsBuilder.build());
52 bandsBuilder = new BandsBuilder();
53 bandsBuilder.setMeterBand(new MeterBandDscpRemarkCaseBuilder()
54 .setMeterBandDscpRemark(new MeterBandDscpRemarkBuilder().build()).build());
55 bandses.add(bandsBuilder.build());
57 bandsBuilder = new BandsBuilder();
58 bandsBuilder.setMeterBand(new MockMeterBandBuilder());
59 bandses.add(bandsBuilder.build());
61 bandsBuilder = new BandsBuilder();
62 bandsBuilder.setMeterBand(new MeterBandExperimenterCaseBuilder()
63 .setMeterBandExperimenter(new MeterBandExperimenterBuilder().build()).build());
64 bandses.add(bandsBuilder.build());
66 meterConfigBuilder.setBands(bandses);
67 meterConfigBuilder.setFlags(new MeterFlags(true, false, true, false));
68 meterConfigs.add(meterConfigBuilder.build());
76 * Test of basic mapping functionality of {@link MeterConfigStatsResponseConvertor#convert(java.util.List)} }
78 public void testToSALMeterConfigList() {
79 final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager();
80 Optional<List<MeterConfigStats>> meterConfigsOptional = convertorManager.convert(createMeterConfigList(), new VersionConvertorData(OFConstants.OFP_VERSION_1_3));
81 List<MeterConfigStats> meterConfigs = meterConfigsOptional.orElse(Collections.emptyList());
83 assertEquals(PRESET_COUNT, meterConfigs.size());
85 for (MeterConfigStats meterConfigStats: meterConfigs){
86 assertEquals(new Long(cnt), meterConfigStats.getMeterId().getValue());
87 assertTrue(meterConfigStats.getFlags().isMeterBurst());
88 assertFalse(meterConfigStats.getFlags().isMeterKbps());
89 assertTrue(meterConfigStats.getFlags().isMeterPktps());
90 assertFalse(meterConfigStats.getFlags().isMeterStats());
97 private final class MockMeterBandBuilder implements org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.MeterBand {
100 public Class<? extends DataContainer> getImplementedInterface() {
101 return MockMeterBandBuilder.class;