Bug 5540 - MeterStatsResponseConvertor, MeterConfigStatsResponseConvertor
[openflowplugin.git] / openflowplugin / src / test / java / org / opendaylight / openflowplugin / openflow / md / core / sal / convertor / MeterConfigStatsResponseConvertorTest.java
1 /*
2  * Copyright (c) 2016 Cisco Systems, Inc. and others.  All rights reserved.
3  *
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
7  */
8
9 package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor;
10
11 import static org.junit.Assert.assertEquals;
12 import static org.junit.Assert.assertFalse;
13 import static org.junit.Assert.assertTrue;
14
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;
34
35 public class MeterConfigStatsResponseConvertorTest {
36     private static final int PRESET_COUNT = 7;
37
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<>();
44
45             BandsBuilder bandsBuilder = new BandsBuilder();
46             bandsBuilder.setMeterBand(new MeterBandDropCaseBuilder()
47                     .setMeterBandDrop(new MeterBandDropBuilder().build()).build());
48             bandses.add(bandsBuilder.build());
49
50             bandsBuilder = new BandsBuilder();
51             bandsBuilder.setMeterBand(new MeterBandDscpRemarkCaseBuilder()
52                     .setMeterBandDscpRemark(new MeterBandDscpRemarkBuilder().build()).build());
53             bandses.add(bandsBuilder.build());
54
55             bandsBuilder = new BandsBuilder();
56             bandsBuilder.setMeterBand(new MockMeterBandBuilder());
57             bandses.add(bandsBuilder.build());
58
59             bandsBuilder = new BandsBuilder();
60             bandsBuilder.setMeterBand(new MeterBandExperimenterCaseBuilder()
61                     .setMeterBandExperimenter(new MeterBandExperimenterBuilder().build()).build());
62             bandses.add(bandsBuilder.build());
63
64             meterConfigBuilder.setBands(bandses);
65             meterConfigBuilder.setFlags(new MeterFlags(true, false, true, false));
66             meterConfigs.add(meterConfigBuilder.build());
67         }
68
69         return meterConfigs;
70     }
71
72     @Test
73     /**
74      * Test of basic mapping functionality of {@link MeterConfigStatsResponseConvertor#convert(java.util.List)} }
75      */
76     public void testToSALMeterConfigList() {
77         Optional<List<MeterConfigStats>> meterConfigsOptional = ConvertorManager.getInstance().convert(createMeterConfigList());
78         List<MeterConfigStats> meterConfigs = meterConfigsOptional.orElse(Collections.emptyList());
79
80         assertEquals(PRESET_COUNT, meterConfigs.size());
81         int cnt = 0;
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());
88
89             cnt++;
90         }
91     }
92
93
94     private final class MockMeterBandBuilder implements org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.MeterBand {
95
96         @Override
97         public Class<? extends DataContainer> getImplementedInterface() {
98             return MockMeterBandBuilder.class;
99         }
100     }
101
102 }