2 * Copyright (c) 2014 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 java.math.BigInteger;
12 import java.util.ArrayList;
13 import java.util.Collections;
14 import java.util.HashMap;
15 import java.util.List;
17 import java.util.Map.Entry;
18 import java.util.Optional;
19 import junit.framework.TestCase;
20 import org.junit.Before;
21 import org.junit.Test;
22 import org.junit.runner.RunWith;
23 import org.mockito.runners.MockitoJUnitRunner;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlInCaseBuilder;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlOutCaseBuilder;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DecMplsTtlCaseBuilder;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DecNwTtlCaseBuilder;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.GroupActionCaseBuilder;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.OutputActionCaseBuilder;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopMplsActionCaseBuilder;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopPbbActionCaseBuilder;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopVlanActionCaseBuilder;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushMplsActionCaseBuilder;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushPbbActionCaseBuilder;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushVlanActionCaseBuilder;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetFieldCaseBuilder;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetMplsTtlActionCaseBuilder;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwTtlActionCaseBuilder;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetQueueActionCaseBuilder;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.ApplyActionsCaseBuilder;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.ClearActionsCaseBuilder;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.GoToTableCaseBuilder;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.MeterCaseBuilder;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.WriteActionsCaseBuilder;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.WriteMetadataCaseBuilder;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.Instruction;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.InstructionBuilder;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.service.rev131026.table.update.UpdatedTableBuilder;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TableConfig;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TableFeatures;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.set.field.match.SetFieldMatchBuilder;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.TableFeaturePropType;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.ApplyActions;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.ApplyActionsBuilder;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.ApplyActionsMiss;
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.ApplyActionsMissBuilder;
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.ApplySetfield;
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.ApplySetfieldBuilder;
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.ApplySetfieldMiss;
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.ApplySetfieldMissBuilder;
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.Instructions;
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.InstructionsBuilder;
64 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.InstructionsMiss;
65 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.InstructionsMissBuilder;
66 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.Match;
67 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.MatchBuilder;
68 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.NextTable;
69 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.NextTableBuilder;
70 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.NextTableMiss;
71 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.NextTableMissBuilder;
72 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.Wildcards;
73 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.WildcardsBuilder;
74 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.WriteActions;
75 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.WriteActionsBuilder;
76 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.WriteActionsMiss;
77 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.WriteActionsMissBuilder;
78 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.WriteSetfield;
79 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.WriteSetfieldBuilder;
80 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.WriteSetfieldMiss;
81 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.WriteSetfieldMissBuilder;
82 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.features.table.features.TableProperties;
83 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.features.table.features.TablePropertiesBuilder;
84 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.features.table.features.table.properties.TableFeatureProperties;
85 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.features.table.features.table.properties.TableFeaturePropertiesBuilder;
87 @RunWith(MockitoJUnitRunner.class)
88 public class TableFeaturesConvertorTest extends TestCase {
89 private static final TablePropertiesBuilder tablePropertiesBuilder = new TablePropertiesBuilder();
90 private static final Map<Class<? extends TableFeaturePropType>, TableFeaturePropType> augmentationsMap = new HashMap<>();
91 private static final List<org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.Instruction> instructionsList = new ArrayList<>();
92 private static final List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action> actions = new ArrayList<>();
93 private static final List<org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.set.field.match.SetFieldMatch> fieldTableFeatures = new ArrayList<>();
95 private static void setupInstructionsList() {
96 instructionsList.add(new GoToTableCaseBuilder().build());
97 instructionsList.add(new WriteMetadataCaseBuilder().build());
98 instructionsList.add(new WriteActionsCaseBuilder().build());
99 instructionsList.add(new ApplyActionsCaseBuilder().build());
100 instructionsList.add(new ClearActionsCaseBuilder().build());
101 instructionsList.add(new MeterCaseBuilder().build());
104 private static void setupFieldTableFeatures() {
105 SetFieldMatchBuilder setFieldMatchBuilder = new SetFieldMatchBuilder();
106 setFieldMatchBuilder.setHasMask(true);
107 setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.ArpOp.class);
108 fieldTableFeatures.add(setFieldMatchBuilder.build());
109 setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.ArpSha.class);
110 fieldTableFeatures.add(setFieldMatchBuilder.build());
111 setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.ArpSpa.class);
112 fieldTableFeatures.add(setFieldMatchBuilder.build());
113 setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.ArpTha.class);
114 fieldTableFeatures.add(setFieldMatchBuilder.build());
115 setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.ArpTpa.class);
116 fieldTableFeatures.add(setFieldMatchBuilder.build());
117 setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.EthDst.class);
118 fieldTableFeatures.add(setFieldMatchBuilder.build());
119 setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.EthSrc.class);
120 fieldTableFeatures.add(setFieldMatchBuilder.build());
121 setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.EthType.class);
122 fieldTableFeatures.add(setFieldMatchBuilder.build());
123 setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Icmpv4Code.class);
124 fieldTableFeatures.add(setFieldMatchBuilder.build());
125 setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Icmpv4Type.class);
126 fieldTableFeatures.add(setFieldMatchBuilder.build());
127 setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Icmpv6Code.class);
128 fieldTableFeatures.add(setFieldMatchBuilder.build());
129 setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Icmpv6Type.class);
130 fieldTableFeatures.add(setFieldMatchBuilder.build());
131 setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.InPhyPort.class);
132 fieldTableFeatures.add(setFieldMatchBuilder.build());
133 setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.InPort.class);
134 fieldTableFeatures.add(setFieldMatchBuilder.build());
135 setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.IpDscp.class);
136 fieldTableFeatures.add(setFieldMatchBuilder.build());
137 setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.IpEcn.class);
138 fieldTableFeatures.add(setFieldMatchBuilder.build());
139 setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.IpProto.class);
140 fieldTableFeatures.add(setFieldMatchBuilder.build());
141 setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Ipv4Dst.class);
142 fieldTableFeatures.add(setFieldMatchBuilder.build());
143 setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Ipv4Src.class);
144 fieldTableFeatures.add(setFieldMatchBuilder.build());
145 setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Ipv6Dst.class);
146 fieldTableFeatures.add(setFieldMatchBuilder.build());
147 setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Ipv6Exthdr.class);
148 fieldTableFeatures.add(setFieldMatchBuilder.build());
149 setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Ipv6Flabel.class);
150 fieldTableFeatures.add(setFieldMatchBuilder.build());
151 setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Ipv6NdSll.class);
152 fieldTableFeatures.add(setFieldMatchBuilder.build());
153 setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Ipv6NdTarget.class);
154 fieldTableFeatures.add(setFieldMatchBuilder.build());
155 setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Ipv6NdTll.class);
156 fieldTableFeatures.add(setFieldMatchBuilder.build());
157 setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Ipv6Src.class);
158 fieldTableFeatures.add(setFieldMatchBuilder.build());
159 setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Metadata.class);
160 fieldTableFeatures.add(setFieldMatchBuilder.build());
161 setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.MplsBos.class);
162 fieldTableFeatures.add(setFieldMatchBuilder.build());
163 setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.MplsLabel.class);
164 fieldTableFeatures.add(setFieldMatchBuilder.build());
165 setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.MplsTc.class);
166 fieldTableFeatures.add(setFieldMatchBuilder.build());
167 setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.PbbIsid.class);
168 fieldTableFeatures.add(setFieldMatchBuilder.build());
169 setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.SctpDst.class);
170 fieldTableFeatures.add(setFieldMatchBuilder.build());
171 setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.SctpSrc.class);
172 fieldTableFeatures.add(setFieldMatchBuilder.build());
173 setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TcpDst.class);
174 fieldTableFeatures.add(setFieldMatchBuilder.build());
175 setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TcpSrc.class);
176 fieldTableFeatures.add(setFieldMatchBuilder.build());
177 setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TunnelId.class);
178 fieldTableFeatures.add(setFieldMatchBuilder.build());
179 setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.UdpDst.class);
180 fieldTableFeatures.add(setFieldMatchBuilder.build());
181 setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.UdpDst.class);
182 fieldTableFeatures.add(setFieldMatchBuilder.build());
183 setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.VlanPcp.class);
184 fieldTableFeatures.add(setFieldMatchBuilder.build());
185 setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.VlanVid.class);
186 fieldTableFeatures.add(setFieldMatchBuilder.build());
187 setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TcpFlags.class);
188 fieldTableFeatures.add(setFieldMatchBuilder.build());
189 setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TunnelIpv4Dst.class);
190 fieldTableFeatures.add(setFieldMatchBuilder.build());
191 setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TunnelIpv4Src.class);
192 fieldTableFeatures.add(setFieldMatchBuilder.build());
195 private static void setupActions() {
196 org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder _actionBuilder = new ActionBuilder();
198 OutputActionCaseBuilder outputActionCaseBuilder = new OutputActionCaseBuilder();
199 actions.add(_actionBuilder.setAction(outputActionCaseBuilder.build()).build());
201 GroupActionCaseBuilder groupActionCaseBuilder = new GroupActionCaseBuilder();
202 actions.add(_actionBuilder.setAction(groupActionCaseBuilder.build()).build());
204 CopyTtlOutCaseBuilder copyTtlOutCaseBuilder = new CopyTtlOutCaseBuilder();
205 actions.add(_actionBuilder.setAction(copyTtlOutCaseBuilder.build()).build());
207 CopyTtlInCaseBuilder copyTtlInCaseBuilder = new CopyTtlInCaseBuilder();
208 actions.add(_actionBuilder.setAction(copyTtlInCaseBuilder.build()).build());
210 SetMplsTtlActionCaseBuilder setMplsTtlActionCaseBuilder = new SetMplsTtlActionCaseBuilder();
211 actions.add(_actionBuilder.setAction(setMplsTtlActionCaseBuilder.build()).build());
213 DecMplsTtlCaseBuilder decMplsTtlCaseBuilder = new DecMplsTtlCaseBuilder();
214 actions.add(_actionBuilder.setAction(decMplsTtlCaseBuilder.build()).build());
216 PushVlanActionCaseBuilder pushVlanActionCaseBuilder = new PushVlanActionCaseBuilder();
217 actions.add(_actionBuilder.setAction(pushVlanActionCaseBuilder.build()).build());
219 PopVlanActionCaseBuilder popVlanActionCaseBuilder = new PopVlanActionCaseBuilder();
220 actions.add(_actionBuilder.setAction(popVlanActionCaseBuilder.build()).build());
222 PushMplsActionCaseBuilder pushMplsActionCaseBuilder = new PushMplsActionCaseBuilder();
223 actions.add(_actionBuilder.setAction(pushMplsActionCaseBuilder.build()).build());
225 PopMplsActionCaseBuilder popMplsActionCaseBuilder = new PopMplsActionCaseBuilder();
226 actions.add(_actionBuilder.setAction(popMplsActionCaseBuilder.build()).build());
228 SetQueueActionCaseBuilder setQueueActionCaseBuilder = new SetQueueActionCaseBuilder();
229 actions.add(_actionBuilder.setAction(setQueueActionCaseBuilder.build()).build());
231 SetNwTtlActionCaseBuilder setNwTtlActionCaseBuilder = new SetNwTtlActionCaseBuilder();
232 actions.add(_actionBuilder.setAction(setNwTtlActionCaseBuilder.build()).build());
234 DecNwTtlCaseBuilder decNwTtlCaseBuilder = new DecNwTtlCaseBuilder();
235 actions.add(_actionBuilder.setAction(decNwTtlCaseBuilder.build()).build());
237 SetFieldCaseBuilder setFieldCaseBuilder = new SetFieldCaseBuilder();
238 actions.add(_actionBuilder.setAction(setFieldCaseBuilder.build()).build());
240 PushPbbActionCaseBuilder pushPbbActionCaseBuilder = new PushPbbActionCaseBuilder();
241 actions.add(_actionBuilder.setAction(pushPbbActionCaseBuilder.build()).build());
243 PopPbbActionCaseBuilder popPbbActionCaseBuilder = new PopPbbActionCaseBuilder();
244 actions.add(_actionBuilder.setAction(popPbbActionCaseBuilder.build()).build());
249 public void setupTest() {
250 setupInstructionsList();
252 setupFieldTableFeatures();
253 InstructionsBuilder instructionsBuilder = new InstructionsBuilder();
254 List<Instruction> instructions = new ArrayList<>();
255 for (int i = 0; i < instructionsList.size(); i++) {
256 InstructionBuilder instructionBuilder = new InstructionBuilder();
257 instructionBuilder.setInstruction(instructionsList.get(i));
258 instructions.add(instructionBuilder.build());
260 org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.instructions.InstructionsBuilder instructionsBuilder1 = new org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.instructions.InstructionsBuilder();
261 instructionsBuilder1.setInstruction(instructions);
262 instructionsBuilder.setInstructions(instructionsBuilder1.build());
264 augmentationsMap.put(Instructions.class, instructionsBuilder.build());
266 InstructionsMissBuilder instructionsMissBuilder = new InstructionsMissBuilder();
267 org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.instructions.miss.InstructionsMissBuilder instructionsMissBuilder1 = new org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.instructions.miss.InstructionsMissBuilder();
268 instructionsMissBuilder1.setInstruction(instructions);
269 instructionsMissBuilder.setInstructionsMiss(instructionsMissBuilder1.build());
270 augmentationsMap.put(InstructionsMiss.class, instructionsMissBuilder.build());
272 NextTableBuilder nextTableBuilder = new NextTableBuilder();
273 augmentationsMap.put(NextTable.class, nextTableBuilder.build());
275 NextTableMissBuilder nextTableMissBuilder = new NextTableMissBuilder();
276 augmentationsMap.put(NextTableMiss.class, nextTableMissBuilder.build());
278 WriteActionsBuilder writeActionsBuilder = new WriteActionsBuilder();
279 augmentationsMap.put(WriteActions.class, writeActionsBuilder.build());
281 WriteActionsMissBuilder writeActionsMissBuilder = new WriteActionsMissBuilder();
282 augmentationsMap.put(WriteActionsMiss.class, writeActionsMissBuilder.build());
284 ApplyActionsBuilder applyActionsBuilder = new ApplyActionsBuilder();
285 augmentationsMap.put(ApplyActions.class, applyActionsBuilder.build());
287 ApplyActionsMissBuilder applyActionsMissBuilder = new ApplyActionsMissBuilder();
288 org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.apply.actions.miss.ApplyActionsMissBuilder applyActionsMissBuilder1 = new org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.apply.actions.miss.ApplyActionsMissBuilder();
289 applyActionsMissBuilder1.setAction(actions);
290 applyActionsMissBuilder.setApplyActionsMiss(applyActionsMissBuilder1.build());
291 augmentationsMap.put(ApplyActionsMiss.class, applyActionsMissBuilder.build());
293 MatchBuilder matchBuilder = new MatchBuilder();
294 augmentationsMap.put(Match.class, matchBuilder.build());
296 WildcardsBuilder wildcardsBuilder = new WildcardsBuilder();
297 augmentationsMap.put(Wildcards.class, wildcardsBuilder.build());
299 WriteSetfieldBuilder writeSetfieldBuilder = new WriteSetfieldBuilder();
300 augmentationsMap.put(WriteSetfield.class, writeSetfieldBuilder.build());
302 WriteSetfieldMissBuilder writeSetfieldMissBuilder = new WriteSetfieldMissBuilder();
303 augmentationsMap.put(WriteSetfieldMiss.class, writeSetfieldMissBuilder.build());
305 ApplySetfieldBuilder applySetfieldBuilder = new ApplySetfieldBuilder();
306 org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.apply.setfield.ApplySetfieldBuilder applySetfieldBuilder1 = new org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.apply.setfield.ApplySetfieldBuilder();
307 applySetfieldBuilder1.setSetFieldMatch(fieldTableFeatures);
308 applySetfieldBuilder.setApplySetfield(applySetfieldBuilder1.build());
309 augmentationsMap.put(ApplySetfield.class, applySetfieldBuilder.build());
311 ApplySetfieldMissBuilder applySetfieldMissBuilder = new ApplySetfieldMissBuilder();
312 augmentationsMap.put(ApplySetfieldMiss.class, applySetfieldMissBuilder.build());
317 * Basic functionality test method for {@link TableFeaturesConvertor#toTableFeaturesRequest(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TableFeatures)}
319 public void testToTableFeaturesRequest() throws Exception {
320 List<org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.features.TableFeatures> tableFeaturesList = new ArrayList<>();
321 org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.features.TableFeaturesBuilder tableFeaturesBuilder = new org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.features.TableFeaturesBuilder();
322 for (int i = 0; i < 10; i++) {
323 tableFeaturesBuilder.setTableId((short) i);
324 tableFeaturesBuilder.setName(String.format("table:%d", i));
325 tableFeaturesBuilder.setMetadataMatch(BigInteger.ONE);
326 tableFeaturesBuilder.setMetadataWrite(BigInteger.ONE);
327 tableFeaturesBuilder.setMaxEntries((long) 1 + (10 * i));
328 tableFeaturesBuilder.setConfig(new TableConfig(false));
329 tableFeaturesBuilder.setTableProperties(getTableProperties());
330 tableFeaturesList.add(tableFeaturesBuilder.build());
333 TableFeatures tableFeatures = new UpdatedTableBuilder()
334 .setTableFeatures(tableFeaturesList)
337 Optional<List<org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.table.features._case.multipart.request.table.features.TableFeatures>> tableFeaturesesOptional =
338 ConvertorManager.getInstance().convert(tableFeatures);
340 List<org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.table.features._case.multipart.request.table.features.TableFeatures> tableFeatureses =
341 tableFeaturesesOptional.orElse(Collections.emptyList());
343 assertNotNull(tableFeatures);
344 assertEquals(10, tableFeatures.getTableFeatures().size());
345 List<TableFeatureProperties> tableFeaturePropertieses = tableFeatures.getTableFeatures().get(0).getTableProperties().getTableFeatureProperties();
346 assertEquals(augmentationsMap.size() + 1, tableFeaturePropertieses.size());
348 org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.ApplyActionsMiss applyActionsMiss = null;
349 for (int i = 0; i < tableFeaturePropertieses.size(); i++) {
350 if (tableFeaturePropertieses.get(i).getTableFeaturePropType().getImplementedInterface().isAssignableFrom(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.ApplyActionsMiss.class)) {
351 applyActionsMiss = (org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.ApplyActionsMiss) tableFeaturePropertieses.get(i).getTableFeaturePropType();
356 assertNotNull(applyActionsMiss);
357 assertEquals(actions.size(), applyActionsMiss.getApplyActionsMiss().getAction().size());
361 private static TableProperties getTableProperties() {
362 TableFeaturePropertiesBuilder tableFeaturePropertiesBuilder = new TableFeaturePropertiesBuilder();
363 List<TableFeatureProperties> tableFeaturePropertieses = new ArrayList<>();
365 for (Entry<Class<? extends TableFeaturePropType>, TableFeaturePropType> entry : augmentationsMap.entrySet()) {
367 tableFeaturePropertiesBuilder.setTableFeaturePropType(entry.getValue());
368 tableFeaturePropertiesBuilder.setOrder(counter);
369 tableFeaturePropertieses.add(tableFeaturePropertiesBuilder.build());
371 tableFeaturePropertieses.add(tableFeaturePropertiesBuilder.build());
372 tablePropertiesBuilder.setTableFeatureProperties(tableFeaturePropertieses);
373 return tablePropertiesBuilder.build();