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.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.config.stats.reply.MeterConfigStats;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterFlags;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterId;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandDropCaseBuilder;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandDscpRemarkCaseBuilder;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandExperimenterCaseBuilder;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.meter.band.drop._case.MeterBandDropBuilder;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.meter.band.dscp.remark._case.MeterBandDscpRemarkBuilder;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.meter.band.experimenter._case.MeterBandExperimenterBuilder;
29 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;
30 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;
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.meter.config.Bands;
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.meter.config.BandsBuilder;
33 import org.opendaylight.yangtools.yang.binding.DataContainer;
35 public class MeterConfigStatsResponseConvertorTest {
36 private static final int PRESET_COUNT = 7;
38 private List<MeterConfig> createMeterConfigList(){
39 List<MeterConfig> meterConfigs = new ArrayList<>();
40 MeterConfigBuilder meterConfigBuilder = new MeterConfigBuilder();
41 for (int i = 0; i < PRESET_COUNT; i++) {
42 meterConfigBuilder.setMeterId(new MeterId((long) i));
43 List<Bands> bandses = new ArrayList<>();
45 BandsBuilder bandsBuilder = new BandsBuilder();
46 bandsBuilder.setMeterBand(new MeterBandDropCaseBuilder()
47 .setMeterBandDrop(new MeterBandDropBuilder().build()).build());
48 bandses.add(bandsBuilder.build());
50 bandsBuilder = new BandsBuilder();
51 bandsBuilder.setMeterBand(new MeterBandDscpRemarkCaseBuilder()
52 .setMeterBandDscpRemark(new MeterBandDscpRemarkBuilder().build()).build());
53 bandses.add(bandsBuilder.build());
55 bandsBuilder = new BandsBuilder();
56 bandsBuilder.setMeterBand(new MockMeterBandBuilder());
57 bandses.add(bandsBuilder.build());
59 bandsBuilder = new BandsBuilder();
60 bandsBuilder.setMeterBand(new MeterBandExperimenterCaseBuilder()
61 .setMeterBandExperimenter(new MeterBandExperimenterBuilder().build()).build());
62 bandses.add(bandsBuilder.build());
64 meterConfigBuilder.setBands(bandses);
65 meterConfigBuilder.setFlags(new MeterFlags(true, false, true, false));
66 meterConfigs.add(meterConfigBuilder.build());
74 * Test of basic mapping functionality of {@link MeterConfigStatsResponseConvertor#convert(java.util.List)} }
76 public void testToSALMeterConfigList() {
77 Optional<List<MeterConfigStats>> meterConfigsOptional = ConvertorManager.getInstance().convert(createMeterConfigList());
78 List<MeterConfigStats> meterConfigs = meterConfigsOptional.orElse(Collections.emptyList());
80 assertEquals(PRESET_COUNT, meterConfigs.size());
82 for (MeterConfigStats meterConfigStats: meterConfigs){
83 assertEquals(new Long(cnt), meterConfigStats.getMeterId().getValue());
84 assertTrue(meterConfigStats.getFlags().isMeterBurst());
85 assertFalse(meterConfigStats.getFlags().isMeterKbps());
86 assertTrue(meterConfigStats.getFlags().isMeterPktps());
87 assertFalse(meterConfigStats.getFlags().isMeterStats());
94 private final class MockMeterBandBuilder implements org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.MeterBand {
97 public Class<? extends DataContainer> getImplementedInterface() {
98 return MockMeterBandBuilder.class;