2 * Copyright (c) 2014 Pantheon Technologies s.r.o. and others. All rights reserved.
\r
4 * This program and the accompanying materials are made available under the
\r
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
\r
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
\r
9 package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor;
\r
11 import java.math.BigInteger;
\r
12 import java.util.ArrayList;
\r
13 import java.util.Collections;
\r
14 import java.util.List;
\r
15 import java.util.Optional;
\r
16 import org.junit.Assert;
\r
17 import org.junit.Test;
\r
18 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
\r
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev150225.ActionRelatedTableFeatureProperty;
\r
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev150225.ActionRelatedTableFeaturePropertyBuilder;
\r
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev150225.InstructionRelatedTableFeatureProperty;
\r
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev150225.InstructionRelatedTableFeaturePropertyBuilder;
\r
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev150225.NextTableRelatedTableFeatureProperty;
\r
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev150225.NextTableRelatedTableFeaturePropertyBuilder;
\r
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev150225.OxmRelatedTableFeatureProperty;
\r
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev150225.OxmRelatedTableFeaturePropertyBuilder;
\r
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev150225.table.features.properties.container.table.feature.properties.NextTableIds;
\r
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev150225.table.features.properties.container.table.feature.properties.NextTableIdsBuilder;
\r
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.CopyTtlInCase;
\r
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.CopyTtlInCaseBuilder;
\r
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.CopyTtlOutCase;
\r
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.CopyTtlOutCaseBuilder;
\r
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.DecMplsTtlCase;
\r
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.DecMplsTtlCaseBuilder;
\r
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.GroupCase;
\r
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.GroupCaseBuilder;
\r
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.PopVlanCase;
\r
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.PopVlanCaseBuilder;
\r
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.PushPbbCase;
\r
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.PushPbbCaseBuilder;
\r
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.PushVlanCase;
\r
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.PushVlanCaseBuilder;
\r
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetFieldCase;
\r
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetFieldCaseBuilder;
\r
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetMplsTtlCase;
\r
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetMplsTtlCaseBuilder;
\r
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetNwSrcCase;
\r
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetNwSrcCaseBuilder;
\r
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.group._case.GroupActionBuilder;
\r
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.push.pbb._case.PushPbbActionBuilder;
\r
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.push.vlan._case.PushVlanActionBuilder;
\r
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.set.field._case.SetFieldActionBuilder;
\r
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.set.mpls.ttl._case.SetMplsTtlActionBuilder;
\r
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.set.nw.src._case.SetNwSrcActionBuilder;
\r
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.Action;
\r
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.ActionBuilder;
\r
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.instruction.grouping.instruction.choice.ApplyActionsCaseBuilder;
\r
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.instruction.grouping.instruction.choice.ClearActionsCaseBuilder;
\r
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.instruction.grouping.instruction.choice.GotoTableCaseBuilder;
\r
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.instruction.grouping.instruction.choice.MeterCaseBuilder;
\r
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.instruction.grouping.instruction.choice.WriteActionsCaseBuilder;
\r
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.instruction.grouping.instruction.choice.WriteMetadataCaseBuilder;
\r
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.instruction.grouping.instruction.choice._goto.table._case.GotoTableBuilder;
\r
64 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.instruction.grouping.instruction.choice.apply.actions._case.ApplyActionsBuilder;
\r
65 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.instruction.grouping.instruction.choice.meter._case.MeterBuilder;
\r
66 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.instruction.grouping.instruction.choice.write.actions._case.WriteActionsBuilder;
\r
67 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.instruction.grouping.instruction.choice.write.metadata._case.WriteMetadataBuilder;
\r
68 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.instructions.grouping.Instruction;
\r
69 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.instruction.rev130731.instructions.grouping.InstructionBuilder;
\r
70 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.EtherType;
\r
71 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.TableConfig;
\r
72 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.TableFeaturesPropType;
\r
73 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.EthDst;
\r
74 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.EthSrc;
\r
75 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.InPhyPort;
\r
76 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.InPort;
\r
77 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.IpEcn;
\r
78 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.IpProto;
\r
79 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Ipv6Exthdr;
\r
80 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.OpenflowBasicClass;
\r
81 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.TcpSrc;
\r
82 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.UdpDst;
\r
83 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.UdpSrc;
\r
84 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.VlanPcp;
\r
85 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.VlanVid;
\r
86 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entries.grouping.MatchEntry;
\r
87 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entries.grouping.MatchEntryBuilder;
\r
88 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.table.features._case.MultipartReplyTableFeatures;
\r
89 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.table.features._case.MultipartReplyTableFeaturesBuilder;
\r
90 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.table.features._case.multipart.reply.table.features.TableFeaturesBuilder;
\r
91 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.table.features.properties.grouping.TableFeatureProperties;
\r
92 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.table.features.properties.grouping.TableFeaturePropertiesBuilder;
\r
93 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.set.field.match.SetFieldMatch;
\r
94 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.ApplySetfield;
\r
95 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.ApplySetfieldMiss;
\r
96 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.Instructions;
\r
97 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.InstructionsMiss;
\r
98 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.Match;
\r
99 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.NextTable;
\r
100 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.NextTableMiss;
\r
101 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.Wildcards;
\r
102 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.WriteSetfield;
\r
103 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.WriteSetfieldMiss;
\r
104 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.features.TableFeatures;
\r
107 * @author michal.polkorab
\r
109 public class TableFeaturesResponseConvertorTest {
\r
112 * Incorrect / empty input test
\r
115 public void test() {
\r
116 List<TableFeatures> list = convert(null);
\r
117 Assert.assertEquals("Returned list is not empty", 0, list.size());
\r
121 * Incorrect / empty input test
\r
124 public void test2() {
\r
125 MultipartReplyTableFeaturesBuilder builder = new MultipartReplyTableFeaturesBuilder();
\r
126 List<TableFeatures> list = convert(builder.build());
\r
127 Assert.assertEquals("Returned list is not empty", 0, list.size());
\r
131 * Test correct input - without table properties
\r
134 public void testWithMPTableFeature() {
\r
135 MultipartReplyTableFeaturesBuilder builder = new MultipartReplyTableFeaturesBuilder();
\r
136 List<org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart
\r
137 .reply.multipart.reply.body.multipart.reply.table.features._case.multipart.reply.table.features
\r
138 .TableFeatures> features = new ArrayList<>();
\r
139 TableFeaturesBuilder featuresBuilder = new TableFeaturesBuilder();
\r
140 featuresBuilder.setTableId((short) 5);
\r
141 featuresBuilder.setName("Aloha");
\r
142 byte[] metaMatch = new byte[]{0, 1, 2, 3, 4, 5, 6, 7};
\r
143 featuresBuilder.setMetadataMatch(metaMatch);
\r
144 byte[] metaWrite = new byte[]{8, 9, 10, 11, 12, 13, 14, 15};
\r
145 featuresBuilder.setMetadataWrite(metaWrite);
\r
146 featuresBuilder.setConfig(new TableConfig(false));
\r
147 featuresBuilder.setMaxEntries(42L);
\r
148 features.add(featuresBuilder.build());
\r
149 builder.setTableFeatures(features);
\r
150 List<TableFeatures> list = convert(builder.build());
\r
151 Assert.assertEquals("Returned empty list", 1, list.size());
\r
152 TableFeatures feature = list.get(0);
\r
153 Assert.assertEquals("Wrong table-id", 5, feature.getTableId().intValue());
\r
154 Assert.assertEquals("Wrong name", "Aloha", feature.getName());
\r
155 Assert.assertEquals("Wrong metadata match", new BigInteger(1, metaMatch), feature.getMetadataMatch());
\r
156 Assert.assertEquals("Wrong metadata write", new BigInteger(1, metaWrite), feature.getMetadataWrite());
\r
157 Assert.assertEquals("Wrong config", false, feature.getConfig().isDEPRECATEDMASK());
\r
158 Assert.assertEquals("Wrong max-entries", 42, feature.getMaxEntries().intValue());
\r
159 Assert.assertEquals("Wrong properties", 0, feature.getTableProperties().getTableFeatureProperties().size());
\r
163 * Test correct input
\r
166 public void testWithMPTableFeatureWithProperties() {
\r
167 MultipartReplyTableFeaturesBuilder builder = new MultipartReplyTableFeaturesBuilder();
\r
168 List<org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart
\r
169 .reply.multipart.reply.body.multipart.reply.table.features._case.multipart.reply.table.features
\r
170 .TableFeatures> features = new ArrayList<>();
\r
172 TableFeaturesBuilder featuresBuilder = new TableFeaturesBuilder();
\r
173 featuresBuilder.setTableId((short) 5);
\r
174 featuresBuilder.setName("Aloha");
\r
175 byte[] metaMatch = new byte[]{0, 1, 2, 3, 4, 5, 6, 7};
\r
176 featuresBuilder.setMetadataMatch(metaMatch);
\r
177 byte[] metaWrite = new byte[]{8, 9, 10, 11, 12, 13, 14, 15};
\r
178 featuresBuilder.setMetadataWrite(metaWrite);
\r
179 featuresBuilder.setConfig(new TableConfig(false));
\r
180 featuresBuilder.setMaxEntries(42L);
\r
182 List<TableFeatureProperties> properties = new ArrayList<>();
\r
183 TableFeaturePropertiesBuilder propBuilder = new TableFeaturePropertiesBuilder();
\r
185 propBuilder.setType(TableFeaturesPropType.OFPTFPTNEXTTABLES);
\r
186 NextTableRelatedTableFeaturePropertyBuilder nextPropBuilder =
\r
187 new NextTableRelatedTableFeaturePropertyBuilder();
\r
188 List<NextTableIds> nextIds = new ArrayList<>();
\r
189 nextIds.add(new NextTableIdsBuilder().setTableId((short) 1).build());
\r
190 nextIds.add(new NextTableIdsBuilder().setTableId((short) 2).build());
\r
191 nextPropBuilder.setNextTableIds(nextIds);
\r
192 propBuilder.addAugmentation(NextTableRelatedTableFeatureProperty.class, nextPropBuilder.build());
\r
193 properties.add(propBuilder.build());
\r
194 propBuilder = new TableFeaturePropertiesBuilder();
\r
196 propBuilder.setType(TableFeaturesPropType.OFPTFPTNEXTTABLESMISS);
\r
197 nextPropBuilder = new NextTableRelatedTableFeaturePropertyBuilder();
\r
198 nextIds = new ArrayList<>();
\r
199 nextIds.add(new NextTableIdsBuilder().setTableId((short) 3).build());
\r
200 nextPropBuilder.setNextTableIds(nextIds);
\r
201 propBuilder.addAugmentation(NextTableRelatedTableFeatureProperty.class, nextPropBuilder.build());
\r
202 properties.add(propBuilder.build());
\r
203 propBuilder = new TableFeaturePropertiesBuilder();
\r
205 propBuilder.setType(TableFeaturesPropType.OFPTFPTINSTRUCTIONS);
\r
206 InstructionRelatedTableFeaturePropertyBuilder insPropBuilder =
\r
207 new InstructionRelatedTableFeaturePropertyBuilder();
\r
209 /* -------------------------------------------------- */
\r
211 List<Action> actions = new ArrayList<>();
\r
212 List<Instruction> insIds = new ArrayList<>();
\r
213 InstructionBuilder insBuilder = new InstructionBuilder();
\r
214 WriteActionsCaseBuilder writeActionsCaseBuilder = new WriteActionsCaseBuilder();
\r
215 WriteActionsBuilder writeActionsBuilder = new WriteActionsBuilder();
\r
216 ActionBuilder actionBuilder = new ActionBuilder();
\r
217 actionBuilder.setActionChoice(createSetNwSrcAction());
\r
218 actions.add(actionBuilder.build());
\r
219 writeActionsBuilder.setAction(actions);
\r
220 writeActionsCaseBuilder.setWriteActions(writeActionsBuilder.build());
\r
221 insBuilder.setInstructionChoice(writeActionsCaseBuilder.build());
\r
222 insIds.add(insBuilder.build());
\r
224 /* -------------------------------------------------- */
\r
226 insBuilder = new InstructionBuilder();
\r
227 GotoTableCaseBuilder gotoCaseBuilder = new GotoTableCaseBuilder();
\r
228 GotoTableBuilder gotoTableBuilder = new GotoTableBuilder();
\r
229 gotoCaseBuilder.setGotoTable(gotoTableBuilder.build());
\r
230 insBuilder.setInstructionChoice(gotoCaseBuilder.build());
\r
231 insIds.add(insBuilder.build());
\r
232 insPropBuilder.setInstruction(insIds);
\r
233 propBuilder.addAugmentation(InstructionRelatedTableFeatureProperty.class, insPropBuilder.build());
\r
234 properties.add(propBuilder.build());
\r
236 /* -------------------------------------------------- */
\r
238 propBuilder = new TableFeaturePropertiesBuilder();
\r
239 propBuilder.setType(TableFeaturesPropType.OFPTFPTINSTRUCTIONSMISS);
\r
240 insPropBuilder = new InstructionRelatedTableFeaturePropertyBuilder();
\r
241 insIds = new ArrayList<>();
\r
242 insBuilder = new InstructionBuilder();
\r
243 WriteMetadataCaseBuilder writeMetadataCaseBuilder = new WriteMetadataCaseBuilder();
\r
244 WriteMetadataBuilder writeMetadataBuilder = new WriteMetadataBuilder();
\r
245 writeMetadataCaseBuilder.setWriteMetadata(writeMetadataBuilder.build());
\r
246 insBuilder.setInstructionChoice(writeMetadataCaseBuilder.build());
\r
247 insIds.add(insBuilder.build());
\r
249 insBuilder = new InstructionBuilder();
\r
250 ApplyActionsCaseBuilder applyActionsCaseBuilder = new ApplyActionsCaseBuilder();
\r
251 ApplyActionsBuilder applyActionsBuilder = new ApplyActionsBuilder();
\r
252 applyActionsCaseBuilder.setApplyActions(applyActionsBuilder.build());
\r
253 insBuilder.setInstructionChoice(applyActionsCaseBuilder.build());
\r
254 insIds.add(insBuilder.build());
\r
256 insBuilder = new InstructionBuilder();
\r
257 MeterCaseBuilder meterCaseBuilder = new MeterCaseBuilder();
\r
258 MeterBuilder meterBuilder = new MeterBuilder();
\r
259 meterCaseBuilder.setMeter(meterBuilder.build());
\r
260 insBuilder.setInstructionChoice(meterCaseBuilder.build());
\r
261 insIds.add(insBuilder.build());
\r
264 insBuilder = new InstructionBuilder();
\r
265 ClearActionsCaseBuilder clearActionsCaseBuilder = new ClearActionsCaseBuilder();
\r
266 insBuilder.setInstructionChoice(clearActionsCaseBuilder.build());
\r
267 insIds.add(insBuilder.build());
\r
270 insBuilder = new InstructionBuilder();
\r
271 GotoTableCaseBuilder gotoCaseBuilder2 = new GotoTableCaseBuilder();
\r
272 GotoTableBuilder gotoTableBuilder2 = new GotoTableBuilder();
\r
273 gotoCaseBuilder2.setGotoTable(gotoTableBuilder2.build());
\r
274 insBuilder.setInstructionChoice(gotoCaseBuilder2.build());
\r
275 insIds.add(insBuilder.build());
\r
277 insPropBuilder.setInstruction(insIds);
\r
278 propBuilder.addAugmentation(InstructionRelatedTableFeatureProperty.class, insPropBuilder.build());
\r
279 properties.add(propBuilder.build());
\r
280 featuresBuilder.setTableFeatureProperties(properties);
\r
281 features.add(featuresBuilder.build());
\r
282 featuresBuilder = new TableFeaturesBuilder();
\r
283 featuresBuilder.setTableId((short) 6);
\r
284 featuresBuilder.setName("Mahalo");
\r
285 byte[] metaMatch2 = new byte[]{8, 9, 10, 11, 12, 13, 14, 15};
\r
286 featuresBuilder.setMetadataMatch(metaMatch2);
\r
287 byte[] metaWrite2 = new byte[]{0, 1, 2, 3, 4, 5, 6, 7};
\r
288 featuresBuilder.setMetadataWrite(metaWrite2);
\r
289 featuresBuilder.setConfig(new TableConfig(false));
\r
290 featuresBuilder.setMaxEntries(24L);
\r
292 /* -------------------------------------------------- */
\r
294 properties = new ArrayList<>();
\r
295 propBuilder = new TableFeaturePropertiesBuilder();
\r
296 propBuilder.setType(TableFeaturesPropType.OFPTFPTMATCH);
\r
297 OxmRelatedTableFeaturePropertyBuilder oxmBuilder = new OxmRelatedTableFeaturePropertyBuilder();
\r
298 List<MatchEntry> entries = new ArrayList<>();
\r
299 MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();
\r
300 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
301 entriesBuilder.setOxmMatchField(InPhyPort.class);
\r
302 entriesBuilder.setHasMask(false);
\r
303 entries.add(entriesBuilder.build());
\r
304 entriesBuilder = new MatchEntryBuilder();
\r
305 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
306 entriesBuilder.setOxmMatchField(InPort.class);
\r
307 entriesBuilder.setHasMask(false);
\r
308 entries.add(entriesBuilder.build());
\r
309 oxmBuilder.setMatchEntry(entries);
\r
310 propBuilder.addAugmentation(OxmRelatedTableFeatureProperty.class, oxmBuilder.build());
\r
311 properties.add(propBuilder.build()); //[0]
\r
313 /* -------------------------------------------------- */
\r
315 propBuilder = new TableFeaturePropertiesBuilder();
\r
316 propBuilder.setType(TableFeaturesPropType.OFPTFPTAPPLYSETFIELD);
\r
317 oxmBuilder = new OxmRelatedTableFeaturePropertyBuilder();
\r
318 entries = new ArrayList<>();
\r
319 entriesBuilder = new MatchEntryBuilder();
\r
320 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
321 entriesBuilder.setOxmMatchField(IpProto.class);
\r
322 entriesBuilder.setHasMask(false);
\r
323 entries.add(entriesBuilder.build());
\r
324 entriesBuilder = new MatchEntryBuilder();
\r
325 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
326 entriesBuilder.setOxmMatchField(IpEcn.class);
\r
327 entriesBuilder.setHasMask(false);
\r
328 entries.add(entriesBuilder.build());
\r
329 oxmBuilder.setMatchEntry(entries);
\r
330 propBuilder.addAugmentation(OxmRelatedTableFeatureProperty.class, oxmBuilder.build());
\r
331 properties.add(propBuilder.build());//[1]
\r
333 /* -------------------------------------------------- */
\r
335 propBuilder = new TableFeaturePropertiesBuilder();
\r
336 propBuilder.setType(TableFeaturesPropType.OFPTFPTWRITESETFIELD);
\r
337 oxmBuilder = new OxmRelatedTableFeaturePropertyBuilder();
\r
338 entries = new ArrayList<>();
\r
339 entriesBuilder = new MatchEntryBuilder();
\r
340 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
341 entriesBuilder.setOxmMatchField(Ipv6Exthdr.class);
\r
342 entriesBuilder.setHasMask(false);
\r
343 entries.add(entriesBuilder.build());
\r
344 entriesBuilder = new MatchEntryBuilder();
\r
345 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
346 entriesBuilder.setOxmMatchField(VlanVid.class);
\r
347 entriesBuilder.setHasMask(false);
\r
348 entries.add(entriesBuilder.build());
\r
349 oxmBuilder.setMatchEntry(entries);
\r
350 propBuilder.addAugmentation(OxmRelatedTableFeatureProperty.class, oxmBuilder.build());
\r
351 properties.add(propBuilder.build());//[2]
\r
353 /* -------------------------------------------------- */
\r
355 propBuilder = new TableFeaturePropertiesBuilder();
\r
356 propBuilder.setType(TableFeaturesPropType.OFPTFPTWRITESETFIELDMISS);
\r
357 oxmBuilder = new OxmRelatedTableFeaturePropertyBuilder();
\r
358 entries = new ArrayList<>();
\r
359 entriesBuilder = new MatchEntryBuilder();
\r
360 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
361 entriesBuilder.setOxmMatchField(VlanPcp.class);
\r
362 entriesBuilder.setHasMask(false);
\r
363 entries.add(entriesBuilder.build());
\r
364 entriesBuilder = new MatchEntryBuilder();
\r
365 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
366 entriesBuilder.setOxmMatchField(TcpSrc.class);
\r
367 entriesBuilder.setHasMask(false);
\r
368 entries.add(entriesBuilder.build());
\r
369 oxmBuilder.setMatchEntry(entries);
\r
370 propBuilder.addAugmentation(OxmRelatedTableFeatureProperty.class, oxmBuilder.build());
\r
371 properties.add(propBuilder.build());//[3]
\r
373 /* -------------------------------------------------- */
\r
375 propBuilder = new TableFeaturePropertiesBuilder();
\r
376 propBuilder.setType(TableFeaturesPropType.OFPTFPTAPPLYSETFIELDMISS);
\r
377 oxmBuilder = new OxmRelatedTableFeaturePropertyBuilder();
\r
378 entries = new ArrayList<>();
\r
379 entriesBuilder = new MatchEntryBuilder();
\r
380 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
381 entriesBuilder.setOxmMatchField(UdpSrc.class);
\r
382 entriesBuilder.setHasMask(false);
\r
383 entries.add(entriesBuilder.build());
\r
385 entriesBuilder = new MatchEntryBuilder();
\r
386 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
387 entriesBuilder.setOxmMatchField(UdpDst.class);
\r
388 entriesBuilder.setHasMask(false);
\r
389 entries.add(entriesBuilder.build());
\r
391 oxmBuilder.setMatchEntry(entries);
\r
392 propBuilder.addAugmentation(OxmRelatedTableFeatureProperty.class, oxmBuilder.build());
\r
393 properties.add(propBuilder.build());//[4]
\r
395 /* -------------------------------------------------- */
\r
397 propBuilder = new TableFeaturePropertiesBuilder();
\r
398 propBuilder.setType(TableFeaturesPropType.OFPTFPTWILDCARDS);
\r
399 oxmBuilder = new OxmRelatedTableFeaturePropertyBuilder();
\r
400 entries = new ArrayList<>();
\r
402 entriesBuilder = new MatchEntryBuilder();
\r
403 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
404 entriesBuilder.setOxmMatchField(EthSrc.class);
\r
405 entriesBuilder.setHasMask(false);
\r
406 entries.add(entriesBuilder.build());
\r
408 entriesBuilder = new MatchEntryBuilder();
\r
409 entriesBuilder.setOxmClass(OpenflowBasicClass.class);
\r
410 entriesBuilder.setOxmMatchField(EthDst.class);
\r
411 entriesBuilder.setHasMask(false);
\r
412 entries.add(entriesBuilder.build());
\r
414 oxmBuilder.setMatchEntry(entries);
\r
415 propBuilder.addAugmentation(OxmRelatedTableFeatureProperty.class, oxmBuilder.build());
\r
416 properties.add(propBuilder.build());//[5]
\r
418 /* -------------------------------------------------- */
\r
420 propBuilder = new TableFeaturePropertiesBuilder();
\r
421 propBuilder.setType(TableFeaturesPropType.OFPTFPTAPPLYACTIONS);
\r
422 ActionRelatedTableFeaturePropertyBuilder actBuilder = new ActionRelatedTableFeaturePropertyBuilder();
\r
423 actions = new ArrayList<>();
\r
425 actionBuilder = new ActionBuilder();
\r
426 actionBuilder.setActionChoice(createSetNwSrcAction());
\r
427 actions.add(actionBuilder.build());
\r
429 actionBuilder = new ActionBuilder();
\r
430 actionBuilder.setActionChoice(createSetNwSrcAction());
\r
431 actions.add(actionBuilder.build());
\r
433 actionBuilder = new ActionBuilder();
\r
434 actionBuilder.setActionChoice(createSetNwSrcAction());
\r
435 actions.add(actionBuilder.build());
\r
436 actBuilder.setAction(actions);
\r
437 propBuilder.addAugmentation(ActionRelatedTableFeatureProperty.class, actBuilder.build());
\r
438 properties.add(propBuilder.build());//[6]
\r
440 /* -------------------------------------------------- */
\r
442 propBuilder = new TableFeaturePropertiesBuilder();
\r
443 propBuilder.setType(TableFeaturesPropType.OFPTFPTAPPLYACTIONSMISS);
\r
444 actBuilder = new ActionRelatedTableFeaturePropertyBuilder();
\r
446 actions = new ArrayList<>();
\r
447 actionBuilder = new ActionBuilder();
\r
448 actionBuilder.setActionChoice(createGroupAction());
\r
449 actions.add(actionBuilder.build());
\r
451 actionBuilder = new ActionBuilder();
\r
452 actionBuilder.setActionChoice(createCopyTtlInCase());
\r
453 actions.add(actionBuilder.build());
\r
455 actionBuilder = new ActionBuilder();
\r
456 actionBuilder.setActionChoice(createCopyTtlOutCase());
\r
457 actions.add(actionBuilder.build());
\r
458 actBuilder.setAction(actions);
\r
459 propBuilder.addAugmentation(ActionRelatedTableFeatureProperty.class, actBuilder.build());
\r
460 properties.add(propBuilder.build());//[7]
\r
462 /* -------------------------------------------------- */
\r
463 propBuilder = new TableFeaturePropertiesBuilder();
\r
464 propBuilder.setType(TableFeaturesPropType.OFPTFPTWRITEACTIONS);
\r
465 actBuilder = new ActionRelatedTableFeaturePropertyBuilder();
\r
467 actions = new ArrayList<>();
\r
468 actionBuilder = new ActionBuilder();
\r
469 actionBuilder.setActionChoice(createSetMplsTtlCase());
\r
470 actions.add(actionBuilder.build());
\r
472 actionBuilder = new ActionBuilder();
\r
473 actionBuilder.setActionChoice(createDecMplsTtlCase());
\r
474 actions.add(actionBuilder.build());
\r
476 actionBuilder = new ActionBuilder();
\r
477 actionBuilder.setActionChoice(pushVlanCase());
\r
478 actions.add(actionBuilder.build());
\r
479 actBuilder.setAction(actions);
\r
481 propBuilder.addAugmentation(ActionRelatedTableFeatureProperty.class, actBuilder.build());
\r
482 properties.add(propBuilder.build());
\r
484 /* -------------------------------------------------- */
\r
486 propBuilder = new TableFeaturePropertiesBuilder();
\r
487 propBuilder.setType(TableFeaturesPropType.OFPTFPTWRITEACTIONSMISS);
\r
488 actBuilder = new ActionRelatedTableFeaturePropertyBuilder();
\r
490 actions = new ArrayList<>();
\r
491 actionBuilder = new ActionBuilder();
\r
492 actionBuilder.setActionChoice(createPopVlanCase());
\r
493 actions.add(actionBuilder.build());
\r
495 actionBuilder = new ActionBuilder();
\r
496 actionBuilder.setActionChoice(createPushPbbCase());
\r
497 actions.add(actionBuilder.build());
\r
499 actionBuilder = new ActionBuilder();
\r
500 actionBuilder.setActionChoice(createEmptySetFieldCase());
\r
501 actions.add(actionBuilder.build());
\r
502 actBuilder.setAction(actions);
\r
504 propBuilder.addAugmentation(ActionRelatedTableFeatureProperty.class, actBuilder.build());
\r
505 properties.add(propBuilder.build());
\r
507 /* -------------------------------------------------- */
\r
509 propBuilder = new TableFeaturePropertiesBuilder();
\r
510 propBuilder.setType(TableFeaturesPropType.OFPTFPTEXPERIMENTER);
\r
511 oxmBuilder = new OxmRelatedTableFeaturePropertyBuilder();
\r
512 propBuilder.addAugmentation(OxmRelatedTableFeatureProperty.class, oxmBuilder.build());
\r
513 properties.add(propBuilder.build());
\r
515 /* -------------------------------------------------- */
\r
517 propBuilder = new TableFeaturePropertiesBuilder();
\r
518 propBuilder.setType(TableFeaturesPropType.OFPTFPTEXPERIMENTERMISS);
\r
519 oxmBuilder = new OxmRelatedTableFeaturePropertyBuilder();
\r
520 propBuilder.addAugmentation(OxmRelatedTableFeatureProperty.class, oxmBuilder.build());
\r
521 properties.add(propBuilder.build());
\r
523 /* -------------------------------------------------- */
\r
525 featuresBuilder.setTableFeatureProperties(properties);
\r
526 features.add(featuresBuilder.build());
\r
527 builder.setTableFeatures(features);
\r
529 List<TableFeatures> list = convert(builder.build());
\r
531 Assert.assertEquals("Returned empty list", 2, list.size());
\r
532 TableFeatures feature = list.get(0);
\r
533 Assert.assertEquals("Wrong table-id", 5, feature.getTableId().intValue());
\r
534 Assert.assertEquals("Wrong name", "Aloha", feature.getName());
\r
535 Assert.assertEquals("Wrong metadata match", new BigInteger(1, metaMatch), feature.getMetadataMatch());
\r
536 Assert.assertEquals("Wrong metadata write", new BigInteger(1, metaWrite), feature.getMetadataWrite());
\r
537 Assert.assertEquals("Wrong config", false, feature.getConfig().isDEPRECATEDMASK());
\r
538 Assert.assertEquals("Wrong max-entries", 42, feature.getMaxEntries().intValue());
\r
539 Assert.assertEquals("Wrong properties", 4, feature.getTableProperties().getTableFeatureProperties().size());
\r
540 org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.features.table.features.table.properties
\r
541 .TableFeatureProperties property = feature.getTableProperties().getTableFeatureProperties().get(0);
\r
542 Assert.assertEquals("Wrong property type", "org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.NextTable",
\r
543 property.getTableFeaturePropType().getImplementedInterface().getName());
\r
544 NextTable propType = (NextTable) property.getTableFeaturePropType();
\r
545 List<Short> ids = propType.getTables().getTableIds();
\r
546 Assert.assertEquals("Wrong next table-id size", 2, ids.size());
\r
547 Assert.assertEquals("Wrong next-registry-id", 1, ids.get(0).intValue());
\r
548 Assert.assertEquals("Wrong next-registry-id", 2, ids.get(1).intValue());
\r
549 property = feature.getTableProperties().getTableFeatureProperties().get(1);
\r
550 Assert.assertEquals("Wrong property type", "org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.NextTableMiss",
\r
551 property.getTableFeaturePropType().getImplementedInterface().getName());
\r
552 NextTableMiss propType2 = (NextTableMiss) property.getTableFeaturePropType();
\r
553 ids = propType2.getTablesMiss().getTableIds();
\r
554 Assert.assertEquals("Wrong next table-id size", 1, ids.size());
\r
555 Assert.assertEquals("Wrong next-registry-id", 3, ids.get(0).intValue());
\r
557 property = feature.getTableProperties().getTableFeatureProperties().get(2);
\r
558 Assert.assertEquals("Wrong property type", "org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.Instructions",
\r
559 property.getTableFeaturePropType().getImplementedInterface().getName());
\r
560 Instructions propType3 = (Instructions) property.getTableFeaturePropType();
\r
561 List<org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list
\r
562 .Instruction> instructionIds = propType3.getInstructions().getInstruction();
\r
563 Assert.assertEquals("Wrong instruction-ids size", 2, instructionIds.size());
\r
564 Assert.assertEquals("Wrong instruction-id", "org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.WriteActionsCase",
\r
565 instructionIds.get(0).getInstruction().getImplementedInterface().getName());
\r
566 Assert.assertEquals("Wrong instruction-id", "org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.GoToTableCase",
\r
567 instructionIds.get(1).getInstruction().getImplementedInterface().getName());
\r
568 property = feature.getTableProperties().getTableFeatureProperties().get(3);
\r
569 Assert.assertEquals("Wrong property type", "org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.InstructionsMiss",
\r
570 property.getTableFeaturePropType().getImplementedInterface().getName());
\r
571 InstructionsMiss propType4 = (InstructionsMiss) property.getTableFeaturePropType();
\r
572 instructionIds = propType4.getInstructionsMiss().getInstruction();
\r
573 Assert.assertEquals("Wrong instruction-ids size", 5, instructionIds.size());
\r
574 Assert.assertEquals("Wrong instruction-id", "org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.WriteMetadataCase",
\r
575 instructionIds.get(0).getInstruction().getImplementedInterface().getName());
\r
576 Assert.assertEquals("Wrong instruction-id", "org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.ApplyActionsCase",
\r
577 instructionIds.get(1).getInstruction().getImplementedInterface().getName());
\r
578 Assert.assertEquals("Wrong instruction-id", "org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.MeterCase",
\r
579 instructionIds.get(2).getInstruction().getImplementedInterface().getName());
\r
580 Assert.assertEquals("Wrong instruction-id", "org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.ClearActionsCase",
\r
581 instructionIds.get(3).getInstruction().getImplementedInterface().getName());
\r
582 Assert.assertEquals("Wrong instruction-id", "org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.GoToTableCase",
\r
583 instructionIds.get(4).getInstruction().getImplementedInterface().getName());
\r
585 feature = list.get(1);
\r
586 Assert.assertEquals("Wrong table-id", 6, feature.getTableId().intValue());
\r
587 Assert.assertEquals("Wrong name", "Mahalo", feature.getName());
\r
588 Assert.assertEquals("Wrong metadata match", new BigInteger(1, metaMatch2), feature.getMetadataMatch());
\r
589 Assert.assertEquals("Wrong metadata write", new BigInteger(1, metaWrite2), feature.getMetadataWrite());
\r
590 Assert.assertEquals("Wrong config", false, feature.getConfig().isDEPRECATEDMASK());
\r
591 Assert.assertEquals("Wrong max-entries", 24, feature.getMaxEntries().intValue());
\r
592 Assert.assertEquals("Wrong properties", 12, feature.getTableProperties().getTableFeatureProperties().size());
\r
593 property = feature.getTableProperties().getTableFeatureProperties().get(0);
\r
594 Assert.assertEquals("Wrong property type", "org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.Match",
\r
595 property.getTableFeaturePropType().getImplementedInterface().getName());
\r
596 Match propType5 = (Match) property.getTableFeaturePropType();
\r
597 List<SetFieldMatch> fieldMatch = propType5.getMatchSetfield().getSetFieldMatch();
\r
598 Assert.assertEquals("Wrong match-entry-ids size", 2, fieldMatch.size());
\r
599 Assert.assertEquals("Wrong match-entry-id", "org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.InPhyPort",
\r
600 fieldMatch.get(0).getMatchType().getName());
\r
601 Assert.assertEquals("Wrong match-entry-id", "org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.InPort",
\r
602 fieldMatch.get(1).getMatchType().getName());
\r
603 property = feature.getTableProperties().getTableFeatureProperties().get(1);
\r
604 Assert.assertEquals("Wrong property type", "org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.ApplySetfield",
\r
605 property.getTableFeaturePropType().getImplementedInterface().getName());
\r
606 ApplySetfield propType6 = (ApplySetfield) property.getTableFeaturePropType();
\r
607 fieldMatch = propType6.getApplySetfield().getSetFieldMatch();
\r
608 Assert.assertEquals("Wrong match-entry-ids size", 2, fieldMatch.size());
\r
609 Assert.assertEquals("Wrong match-entry-id", "org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.IpProto",
\r
610 fieldMatch.get(0).getMatchType().getName());
\r
611 Assert.assertEquals("Wrong match-entry-id", "org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.IpEcn",
\r
612 fieldMatch.get(1).getMatchType().getName());
\r
613 property = feature.getTableProperties().getTableFeatureProperties().get(2);
\r
614 Assert.assertEquals("Wrong property type", "org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.WriteSetfield",
\r
615 property.getTableFeaturePropType().getImplementedInterface().getName());
\r
616 WriteSetfield propType7 = (WriteSetfield) property.getTableFeaturePropType();
\r
617 fieldMatch = propType7.getWriteSetfield().getSetFieldMatch();
\r
618 Assert.assertEquals("Wrong match-entry-ids size", 2, fieldMatch.size());
\r
619 Assert.assertEquals("Wrong match-entry-id", "org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Ipv6Exthdr",
\r
620 fieldMatch.get(0).getMatchType().getName());
\r
621 Assert.assertEquals("Wrong match-entry-id", "org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.VlanVid",
\r
622 fieldMatch.get(1).getMatchType().getName());
\r
623 property = feature.getTableProperties().getTableFeatureProperties().get(3);
\r
624 Assert.assertEquals("Wrong property type", "org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.WriteSetfieldMiss",
\r
625 property.getTableFeaturePropType().getImplementedInterface().getName());
\r
626 WriteSetfieldMiss propType8 = (WriteSetfieldMiss) property.getTableFeaturePropType();
\r
627 fieldMatch = propType8.getWriteSetfieldMiss().getSetFieldMatch();
\r
628 Assert.assertEquals("Wrong match-entry-ids size", 2, fieldMatch.size());
\r
629 Assert.assertEquals("Wrong match-entry-id", "org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.VlanPcp",
\r
630 fieldMatch.get(0).getMatchType().getName());
\r
631 Assert.assertEquals("Wrong match-entry-id", "org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TcpSrc",
\r
632 fieldMatch.get(1).getMatchType().getName());
\r
633 property = feature.getTableProperties().getTableFeatureProperties().get(4);
\r
634 Assert.assertEquals("Wrong property type", "org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.ApplySetfieldMiss",
\r
635 property.getTableFeaturePropType().getImplementedInterface().getName());
\r
636 ApplySetfieldMiss propType9 = (ApplySetfieldMiss) property.getTableFeaturePropType();
\r
637 fieldMatch = propType9.getApplySetfieldMiss().getSetFieldMatch();
\r
638 Assert.assertEquals("Wrong match-entry-ids size", 2, fieldMatch.size());
\r
639 Assert.assertEquals("Wrong match-entry-id", "org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.UdpSrc",
\r
640 fieldMatch.get(0).getMatchType().getName());
\r
641 Assert.assertEquals("Wrong match-entry-id", "org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.UdpDst",
\r
642 fieldMatch.get(1).getMatchType().getName());
\r
643 property = feature.getTableProperties().getTableFeatureProperties().get(5);
\r
644 Assert.assertEquals("Wrong property type", "org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.Wildcards",
\r
645 property.getTableFeaturePropType().getImplementedInterface().getName());
\r
646 Wildcards propType10 = (Wildcards) property.getTableFeaturePropType();
\r
647 fieldMatch = propType10.getWildcardSetfield().getSetFieldMatch();
\r
648 Assert.assertEquals("Wrong match-entry-ids size", 2, fieldMatch.size());
\r
649 Assert.assertEquals("Wrong match-entry-id", "org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.EthSrc",
\r
650 fieldMatch.get(0).getMatchType().getName());
\r
651 Assert.assertEquals("Wrong match-entry-id", "org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.EthDst",
\r
652 fieldMatch.get(1).getMatchType().getName());
\r
654 property = feature.getTableProperties().getTableFeatureProperties().get(6);
\r
655 Assert.assertEquals("Wrong property type", "org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.ApplyActions",
\r
656 property.getTableFeaturePropType().getImplementedInterface().getName());
\r
657 org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type
\r
658 .ApplyActions propType11 = (org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.ApplyActions) property.getTableFeaturePropType();
\r
659 List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action> actionsList = propType11.getApplyActions().getAction();
\r
660 Assert.assertEquals("Wrong actions-ids size", 3, actionsList.size());
\r
661 Assert.assertEquals("Wrong actions-id", "org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwSrcActionCase",
\r
662 actionsList.get(0).getAction().getImplementedInterface().getName());
\r
663 Assert.assertEquals("Wrong actions-id", "org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwSrcActionCase",
\r
664 actionsList.get(1).getAction().getImplementedInterface().getName());
\r
665 Assert.assertEquals("Wrong actions-id", "org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwSrcActionCase",
\r
666 actionsList.get(2).getAction().getImplementedInterface().getName());
\r
668 property = feature.getTableProperties().getTableFeatureProperties().get(7);
\r
669 Assert.assertEquals("Wrong property type", "org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.ApplyActionsMiss",
\r
670 property.getTableFeaturePropType().getImplementedInterface().getName());
\r
671 org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type
\r
672 .ApplyActionsMiss propType12 = (org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type
\r
673 .ApplyActionsMiss) property.getTableFeaturePropType();
\r
674 actionsList = propType12.getApplyActionsMiss().getAction();
\r
675 Assert.assertEquals("Wrong actions-ids size", 3, actionsList.size());
\r
676 Assert.assertEquals("Wrong actions-id", "org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.GroupActionCase",
\r
677 actionsList.get(0).getAction().getImplementedInterface().getName());
\r
678 Assert.assertEquals("Wrong actions-id", "org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlInCase",
\r
679 actionsList.get(1).getAction().getImplementedInterface().getName());
\r
680 Assert.assertEquals("Wrong actions-id", "org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlOutCase",
\r
681 actionsList.get(2).getAction().getImplementedInterface().getName());
\r
682 property = feature.getTableProperties().getTableFeatureProperties().get(8);
\r
683 Assert.assertEquals("Wrong property type", "org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.WriteActions",
\r
684 property.getTableFeaturePropType().getImplementedInterface().getName());
\r
686 org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type
\r
687 .WriteActions propType13 = (org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type
\r
688 .WriteActions) property.getTableFeaturePropType();
\r
689 actionsList = propType13.getWriteActions().getAction();
\r
690 Assert.assertEquals("Wrong actions-ids size", 3, actionsList.size());
\r
691 Assert.assertEquals("Wrong actions-id", "org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetMplsTtlActionCase",
\r
692 actionsList.get(0).getAction().getImplementedInterface().getName());
\r
693 Assert.assertEquals("Wrong actions-id", "org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DecMplsTtlCase",
\r
694 actionsList.get(1).getAction().getImplementedInterface().getName());
\r
695 Assert.assertEquals("Wrong actions-id", "org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushVlanActionCase",
\r
696 actionsList.get(2).getAction().getImplementedInterface().getName());
\r
697 property = feature.getTableProperties().getTableFeatureProperties().get(9);
\r
698 Assert.assertEquals("Wrong property type", "org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.WriteActionsMiss",
\r
699 property.getTableFeaturePropType().getImplementedInterface().getName());
\r
701 org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type
\r
702 .WriteActionsMiss propType14 = (org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type
\r
703 .WriteActionsMiss) property.getTableFeaturePropType();
\r
704 actionsList = propType14.getWriteActionsMiss().getAction();
\r
705 Assert.assertEquals("Wrong actions-ids size", 3, actionsList.size());
\r
706 Assert.assertEquals("Wrong actions-id", "org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopVlanActionCase",
\r
707 actionsList.get(0).getAction().getImplementedInterface().getName());
\r
708 Assert.assertEquals("Wrong actions-id", "org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushPbbActionCase",
\r
709 actionsList.get(1).getAction().getImplementedInterface().getName());
\r
710 Assert.assertEquals("Wrong actions-id", "org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetFieldCase",
\r
711 actionsList.get(2).getAction().getImplementedInterface().getName());
\r
714 private static SetNwSrcCase createSetNwSrcAction() {
\r
715 final SetNwSrcCaseBuilder setNwSrcCaseBuilder;
\r
716 final SetNwSrcActionBuilder setNwSrcActionBuilder;
\r
717 setNwSrcCaseBuilder = new SetNwSrcCaseBuilder();
\r
718 setNwSrcActionBuilder = new SetNwSrcActionBuilder();
\r
719 setNwSrcActionBuilder.setIpAddress(new Ipv4Address("1.2.3.4"));
\r
720 setNwSrcCaseBuilder.setSetNwSrcAction(setNwSrcActionBuilder.build());
\r
721 return setNwSrcCaseBuilder.build();
\r
724 private static GroupCase createGroupAction() {
\r
725 final GroupCaseBuilder groupCaseBuilder = new GroupCaseBuilder();
\r
726 final GroupActionBuilder groupActionBuilder = new GroupActionBuilder();
\r
727 groupActionBuilder.setGroupId(42L);
\r
728 groupCaseBuilder.setGroupAction(groupActionBuilder.build());
\r
729 return groupCaseBuilder.build();
\r
732 private static CopyTtlInCase createCopyTtlInCase() {
\r
733 CopyTtlInCaseBuilder copyTtlInCaseBuilder = new CopyTtlInCaseBuilder();
\r
734 return copyTtlInCaseBuilder.build();
\r
737 private static CopyTtlOutCase createCopyTtlOutCase() {
\r
738 CopyTtlOutCaseBuilder copyTtlInCaseBuilder = new CopyTtlOutCaseBuilder();
\r
739 return copyTtlInCaseBuilder.build();
\r
742 private static SetMplsTtlCase createSetMplsTtlCase() {
\r
743 SetMplsTtlCaseBuilder setMplsTtlCaseBuilder = new SetMplsTtlCaseBuilder();
\r
744 SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder();
\r
745 setMplsTtlActionBuilder.setMplsTtl((short) 42);
\r
746 setMplsTtlCaseBuilder.setSetMplsTtlAction(setMplsTtlActionBuilder.build());
\r
747 return setMplsTtlCaseBuilder.build();
\r
750 private static DecMplsTtlCase createDecMplsTtlCase() {
\r
751 DecMplsTtlCaseBuilder decMplsTtlCaseBuilder = new DecMplsTtlCaseBuilder();
\r
752 return decMplsTtlCaseBuilder.build();
\r
755 private static PushVlanCase pushVlanCase() {
\r
756 PushVlanCaseBuilder pushVlanCaseBuilder = new PushVlanCaseBuilder();
\r
757 PushVlanActionBuilder pushVlanActionBuilder = new PushVlanActionBuilder();
\r
758 pushVlanActionBuilder.setEthertype(new EtherType(1));
\r
759 pushVlanCaseBuilder.setPushVlanAction(pushVlanActionBuilder.build());
\r
760 return pushVlanCaseBuilder.build();
\r
763 private static PopVlanCase createPopVlanCase() {
\r
764 PopVlanCaseBuilder popVlanCaseBuilder = new PopVlanCaseBuilder();
\r
765 return popVlanCaseBuilder.build();
\r
768 private static PushPbbCase createPushPbbCase() {
\r
769 PushPbbCaseBuilder pushPbbCaseBuilder = new PushPbbCaseBuilder();
\r
770 PushPbbActionBuilder pushPbbActionBuilder = new PushPbbActionBuilder();
\r
771 pushPbbActionBuilder.setEthertype(new EtherType(1));
\r
772 pushPbbCaseBuilder.setPushPbbAction(pushPbbActionBuilder.build());
\r
773 return pushPbbCaseBuilder.build();
\r
776 private static SetFieldCase createEmptySetFieldCase() {
\r
777 SetFieldCaseBuilder setFieldCaseBuilder = new SetFieldCaseBuilder();
\r
778 SetFieldActionBuilder setFieldActionBuilder = new SetFieldActionBuilder();
\r
779 List<MatchEntry> matchEntries = new ArrayList<>();
\r
780 MatchEntryBuilder matchEntryBuilder = new MatchEntryBuilder();
\r
782 matchEntries.add(matchEntryBuilder.build());
\r
783 setFieldActionBuilder.setMatchEntry(matchEntries);
\r
784 setFieldCaseBuilder.setSetFieldAction(setFieldActionBuilder.build());
\r
785 return setFieldCaseBuilder.build();
\r
789 private List<TableFeatures> convert(MultipartReplyTableFeatures features) {
\r
790 Optional<List<TableFeatures>> listOptional = ConvertorManager.getInstance().convert(features);
\r
791 return listOptional.orElse(Collections.emptyList());
\r