comments: get version from session context and
[openflowplugin.git] / openflowplugin / src / test / java / org / opendaylight / openflowplugin / openflow / md / core / sal / convertor / MeterConvertorTest.java
1 package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import junit.framework.Assert;
7
8 import org.junit.Test;
9 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.AddMeterInput;
10 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.AddMeterInputBuilder;
11 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterFlags.Flags;
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.Drop;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.DropBuilder;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.DscpRemark;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.DscpRemarkBuilder;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.Experimenter;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.ExperimenterBuilder;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.MeterBandHeaders;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.MeterBandHeadersBuilder;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.meter.band.headers.MeterBandHeader;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.meter.band.headers.MeterBandHeaderBuilder;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.meter.band.headers.meter.band.header.MeterBandTypesBuilder;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterModCommand;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MeterModInput;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.MeterBand;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandDrop;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandDscpRemark;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandExperimenter;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.mod.Bands;
30
31
32 public class MeterConvertorTest {
33
34
35
36 @Test
37 public void testMeterModCommandConvertorwithAllParameters()
38 {
39
40         /// DROP Band
41         MeterBandHeaderBuilder meterBandHeaderBuilder = new MeterBandHeaderBuilder();
42         MeterBandTypesBuilder meterBandTypesB = new MeterBandTypesBuilder();
43
44         org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterBandType.Flags bandFlag = new org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterBandType.Flags(true, false, false);
45         meterBandTypesB.setFlags(bandFlag);//_ofpmbtDrop
46         DropBuilder drop = new DropBuilder();
47         drop.setBurstSize(10L);
48         drop.setRate(20L);
49         Drop drp = drop.build();
50         meterBandHeaderBuilder.setBandType(drp);
51         meterBandHeaderBuilder.setMeterBandTypes(meterBandTypesB.build());
52
53
54
55         MeterBandHeader meterBH = meterBandHeaderBuilder.build();
56
57         //DSCP Mark
58         MeterBandHeaderBuilder meterBandHeaderBuilder1 = new MeterBandHeaderBuilder();
59         MeterBandTypesBuilder meterBandTypesB1 = new MeterBandTypesBuilder();
60         org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterBandType.Flags bandFlag1 = new org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterBandType.Flags(false, true, false);
61
62         meterBandTypesB1.setFlags(bandFlag1);
63         DscpRemarkBuilder dscp = new DscpRemarkBuilder();
64         dscp.setBurstSize(11L);
65         dscp.setRate(21L);
66         dscp.setPercLevel((short)1);
67         DscpRemark dscpRemark = dscp.build();
68         meterBandHeaderBuilder1.setBandType(dscpRemark);
69         meterBandHeaderBuilder1.setMeterBandTypes(meterBandTypesB1.build());
70
71         MeterBandHeader meterBH1 = meterBandHeaderBuilder1.build();
72
73         //Experimental
74
75                 MeterBandHeaderBuilder meterBandHeaderBuilder2 = new MeterBandHeaderBuilder();
76                 MeterBandTypesBuilder meterBandTypesB2 = new MeterBandTypesBuilder();
77                 org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterBandType.Flags bandFlag2 = new org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterBandType.Flags(false,false, true);
78                 meterBandTypesB2.setFlags(bandFlag2);
79
80                 ExperimenterBuilder exp = new ExperimenterBuilder();
81                 exp.setBurstSize(12L);
82                 exp.setRate(22L);
83                 exp.setExperimenter(23L);
84                 Experimenter experimenter = exp.build();
85                 meterBandHeaderBuilder2.setBandType(experimenter);
86                 meterBandHeaderBuilder2.setMeterBandTypes(meterBandTypesB2.build());
87                 MeterBandHeader meterBH2 = meterBandHeaderBuilder2.build();
88
89
90         List<MeterBandHeader> meterBandList = new ArrayList<MeterBandHeader>();
91         meterBandList.add(0,meterBH);
92         meterBandList.add(1,meterBH1);
93         meterBandList.add(2,meterBH2);
94
95         //Constructing List of Bands
96         MeterBandHeadersBuilder meterBandHeadersBuilder = new MeterBandHeadersBuilder();
97         meterBandHeadersBuilder.setMeterBandHeader(meterBandList);
98
99         MeterBandHeaders meterBandHeaders =meterBandHeadersBuilder.build();
100
101
102         AddMeterInputBuilder addMeterFromSAL = new AddMeterInputBuilder();
103
104
105         addMeterFromSAL.setMeterBandHeaders(meterBandHeaders); //MeterBands added to the meter command.
106 Long temp = 10L;
107
108          //NodeKey key = new NodeKey(new NodeId("24"));
109      //InstanceIdentifier<Node> path = InstanceIdentifier.builder().node(Nodes.class).node(Node.class, key).toInstance();
110
111         addMeterFromSAL.setMeterId(new org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterId(10L));
112
113
114                 Flags flagV = new Flags(true, true, true,true);
115                 addMeterFromSAL.setFlags(flagV);
116
117         AddMeterInput meterInputCommand = addMeterFromSAL.build();
118         MeterModInput outMeterModInput = MeterConvertor.toMeterModInput(meterInputCommand, (short) 0X4);
119
120
121
122
123          Assert.assertEquals(MeterModCommand.OFPMCADD, outMeterModInput.getCommand());
124         Assert.assertTrue(outMeterModInput.getFlags().isOFPMFBURST());
125         Assert.assertEquals(temp,outMeterModInput.getMeterId().getValue());
126         //BandInformation starts here:
127
128               List<Bands> bands =  outMeterModInput.getBands();
129                         for (Bands currentBand : bands) {
130                     MeterBand meterBand = currentBand.getMeterBand();
131                         if(meterBand instanceof MeterBandDrop){
132
133                                         Assert.assertEquals(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType.OFPMBTDROP, ((MeterBandDrop) meterBand).getType());
134                                         Assert.assertEquals((long)20,(long)((MeterBandDrop) meterBand).getBurstSize());
135                                         Assert.assertEquals((long)10, (long)((MeterBandDrop) meterBand).getRate());
136
137                         }
138                         if(meterBand instanceof MeterBandDscpRemark)
139                         {
140                                 Assert.assertEquals(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType.OFPMBTDSCPREMARK, ((MeterBandDscpRemark) meterBand).getType());
141                                 Assert.assertEquals((long)11,(long)((MeterBandDscpRemark) meterBand).getBurstSize());
142                                 Assert.assertEquals((long)21, (long)((MeterBandDscpRemark) meterBand).getRate());
143                                 Assert.assertEquals((short)1, (short)((MeterBandDscpRemark) meterBand).getPrecLevel());
144
145                         }
146                         if(meterBand instanceof MeterBandExperimenter)
147                         {
148                                 Assert.assertEquals(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType.OFPMBTEXPERIMENTER, ((MeterBandExperimenter) meterBand).getType());
149                                 Assert.assertEquals((long)12,(long)((MeterBandExperimenter) meterBand).getBurstSize());
150                                 Assert.assertEquals((long)22, (long)((MeterBandExperimenter) meterBand).getRate());
151                                 Assert.assertEquals((long)23, (long)((MeterBandExperimenter) meterBand).getExperimenter());
152
153                         }
154
155                     }
156
157
158 }
159
160
161
162 }