2 * Copyright (c) 2014 Ericsson India Global Services Pvt Ltd. 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
8 package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor;
10 import static org.junit.Assert.assertEquals;
11 import static org.junit.Assert.assertTrue;
13 import com.google.common.collect.ImmutableList;
14 import java.util.ArrayList;
15 import java.util.List;
16 import java.util.Optional;
17 import org.junit.Before;
18 import org.junit.Test;
19 import org.opendaylight.openflowplugin.api.OFConstants;
20 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData;
21 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlInCaseBuilder;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.GroupActionCaseBuilder;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.OutputActionCaseBuilder;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetMplsTtlActionCaseBuilder;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.in._case.CopyTtlIn;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.in._case.CopyTtlInBuilder;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.group.action._case.GroupAction;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.group.action._case.GroupActionBuilder;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.output.action._case.OutputActionBuilder;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.mpls.ttl.action._case.SetMplsTtlAction;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.mpls.ttl.action._case.SetMplsTtlActionBuilder;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.AddGroupInput;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.AddGroupInputBuilder;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.BucketId;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.Group;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupId;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupTypes;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.Buckets;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.BucketsBuilder;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.Bucket;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.BucketBuilder;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.BucketKey;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.GroupCaseBuilder;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetMplsTtlCaseBuilder;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.Action;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.GroupModCommand;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.GroupType;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GroupModInputBuilder;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.buckets.grouping.BucketsList;
52 import org.opendaylight.yangtools.yang.binding.util.BindingMap;
53 import org.opendaylight.yangtools.yang.common.Uint16;
54 import org.opendaylight.yangtools.yang.common.Uint32;
55 import org.opendaylight.yangtools.yang.common.Uint64;
56 import org.opendaylight.yangtools.yang.common.Uint8;
58 public class GroupConvertorTest {
59 private ConvertorManager convertorManager;
63 convertorManager = ConvertorManagerFactory.createDefaultManager();
67 * test of {@link GroupConvertor#convert(Group, VersionDatapathIdConvertorData)} }.
70 public void testGroupModConvertorwithallParameters() {
72 final AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
74 addGroupBuilder.setGroupId(new GroupId(Uint32.TEN));
76 addGroupBuilder.setGroupType(GroupTypes.GroupAll);
77 final List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action>
78 actionsList1 = new ArrayList<>();
83 final GroupActionBuilder groupActionBuilder = new GroupActionBuilder();
84 groupActionBuilder.setGroup("005");
85 final GroupAction groupIdaction = groupActionBuilder.build();
86 final ActionBuilder actionsB = new ActionBuilder();
87 actionsB.setOrder(actionOrder++).setAction(new GroupActionCaseBuilder().setGroupAction(groupIdaction).build());
90 final GroupActionBuilder groupActionBuilder1 = new GroupActionBuilder();
91 groupActionBuilder1.setGroup("006");
92 final GroupAction groupIdaction1 = groupActionBuilder.build();
93 final ActionBuilder actionsB1 = new ActionBuilder();
94 actionsB1.setOrder(actionOrder++).setAction(new GroupActionCaseBuilder()
95 .setGroupAction(groupIdaction1).build());
97 final var actionsList = BindingMap.ordered(actionsB.build(), actionsB1.build());
100 final BucketsBuilder bucketsB = new BucketsBuilder();
102 final BucketBuilder bucketB = new BucketBuilder();
103 bucketB.setWeight(Uint16.TEN);
104 bucketB.setWatchPort(Uint32.valueOf(20));
105 bucketB.setWatchGroup(Uint32.valueOf(22));
106 bucketB.withKey(new BucketKey(new BucketId(Uint32.ZERO)));
108 bucketB.setAction(actionsList);
109 final Bucket bucket = bucketB.build();
111 final BucketBuilder bucketB1 = new BucketBuilder();
112 bucketB1.setWeight(Uint16.valueOf(50));
113 bucketB1.setWatchPort(Uint32.valueOf(60));
114 bucketB1.setWatchGroup(Uint32.valueOf(70));
115 bucketB1.withKey(new BucketKey(new BucketId(Uint32.ONE)));
118 final CopyTtlInBuilder copyTtlB = new CopyTtlInBuilder();
119 final CopyTtlIn copyTtl = copyTtlB.build();
120 final ActionBuilder actionsB2 = new ActionBuilder();
121 actionsB2.setOrder(actionOrder++).setAction(new CopyTtlInCaseBuilder().setCopyTtlIn(copyTtl).build());
124 final SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder();
125 setMplsTtlActionBuilder.setMplsTtl(Uint8.ONE);
126 final SetMplsTtlAction setMAction = setMplsTtlActionBuilder.build();
127 final ActionBuilder actionsB3 = new ActionBuilder();
129 actionsB3.setOrder(actionOrder++).setAction(new SetMplsTtlActionCaseBuilder()
130 .setSetMplsTtlAction(setMAction).build());
133 actionsList1.add(actionsB2.build());
134 actionsList1.add(actionsB3.build());
136 bucketB1.setAction(actionsList);
138 final Bucket bucket1 = bucketB1.build(); // second bucket
140 bucketsB.setBucket(BindingMap.ordered(bucket, bucket1));// List of bucket added to the Buckets
141 final Buckets buckets = bucketsB.build();
143 addGroupBuilder.setBuckets(buckets);
145 VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);
146 data.setDatapathId(Uint64.ONE);
148 final GroupModInputBuilder outAddGroupInput = convert(addGroupBuilder.build(), data);
150 assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
151 assertEquals(GroupType.OFPGTALL, outAddGroupInput.getType());
153 assertEquals(10L, outAddGroupInput.getGroupId().getValue().toJava());
154 assertEquals(10, outAddGroupInput.getBucketsList().get(0).getWeight().toJava());
155 assertEquals(20L, outAddGroupInput.getBucketsList().get(0).getWatchPort().getValue().toJava());
156 assertEquals(22L, outAddGroupInput.getBucketsList().get(0).getWatchGroup().toJava());
158 final List<Action> outActionList = outAddGroupInput.getBucketsList().get(0).getAction();
159 assertEquals(ImmutableList.of(new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action
160 .rev150203.actions.grouping.ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
161 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping
162 .action.choice.group._case.GroupActionBuilder().setGroupId(Uint32.valueOf(5)).build())
164 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping
165 .ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
166 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action
167 .grouping.action.choice.group._case.GroupActionBuilder().setGroupId(Uint32.valueOf(5))
169 .build()), outActionList);
171 assertEquals(50, outAddGroupInput.getBucketsList().get(1).getWeight().toJava());
172 assertEquals(60, outAddGroupInput.getBucketsList().get(1).getWatchPort().getValue().toJava());
173 assertEquals(70L, outAddGroupInput.getBucketsList().get(1).getWatchGroup().toJava());
175 final List<Action> outActionList1 = outAddGroupInput.getBucketsList().get(1).getAction();
176 assertEquals(ImmutableList.of(new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action
177 .rev150203.actions.grouping.ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
178 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping
179 .action.choice.group._case.GroupActionBuilder().setGroupId(Uint32.valueOf(5)).build()).build())
181 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping
182 .ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
183 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action
184 .grouping.action.choice.group._case.GroupActionBuilder().setGroupId(Uint32.valueOf(5))
186 .build()), outActionList1);
190 * test of {@link GroupConvertor#convert(Group, VersionDatapathIdConvertorData)} }.
193 public void testGroupModConvertorNoBucket() {
194 final AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
196 addGroupBuilder.setGroupId(new GroupId(Uint32.TEN));
198 addGroupBuilder.setGroupType(GroupTypes.GroupAll);
200 VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);
201 data.setDatapathId(Uint64.ONE);
203 final GroupModInputBuilder outAddGroupInput = convert(addGroupBuilder.build(), data);
204 assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
205 assertEquals(GroupType.OFPGTALL, outAddGroupInput.getType());
209 * test of {@link GroupConvertor#convert(Group, VersionDatapathIdConvertorData)} }.
212 public void testGroupModConvertorBucketwithNOWieghtValuesForGroupTypeFastFailure() {
216 final BucketBuilder bucketB = new BucketBuilder()
217 .setAction(BindingMap.ordered(
219 assembleActionBuilder("005", actionOrder++).build(),
221 assembleActionBuilder("006", actionOrder++).build()
222 // .. and mr.Bond is not coming today
224 .withKey(new BucketKey(new BucketId(Uint32.ZERO)));
226 final BucketBuilder bucketB1 = new BucketBuilder()
227 .setAction(BindingMap.ordered(
229 assembleCopyTtlInBuilder(actionOrder++).build(),
231 assembleSetMplsTtlActionBuilder(actionOrder++).build()))
232 .withKey(new BucketKey(new BucketId(Uint32.ONE)));
234 final AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder()
235 .setGroupId(new GroupId(Uint32.TEN))
236 .setGroupType(GroupTypes.GroupFf)
237 .setBuckets(new BucketsBuilder()
238 .setBucket(BindingMap.ordered(bucketB.build(), bucketB1.build()))
241 VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);
242 data.setDatapathId(Uint64.ONE);
244 final GroupModInputBuilder outAddGroupInput = convert(addGroupBuilder.build(), data);
246 assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
247 assertEquals(GroupType.OFPGTFF, outAddGroupInput.getType());
249 assertEquals(10L, outAddGroupInput.getGroupId().getValue().longValue());
251 final List<Action> outActionList = outAddGroupInput.getBucketsList().get(0).getAction();
252 assertEquals(ImmutableList.of(new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203
253 .actions.grouping.ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
254 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action
255 .grouping.action.choice.group._case.GroupActionBuilder().setGroupId(Uint32.valueOf(5L))
258 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping
259 .ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
260 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203
261 .action.grouping.action.choice.group._case.GroupActionBuilder()
262 .setGroupId(Uint32.valueOf(6)).build()).build()).build()), outActionList);
264 final List<Action> outActionList1 = outAddGroupInput.getBucketsList().get(1).getAction();
265 assertEquals(ImmutableList.of(new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203
266 .actions.grouping.ActionBuilder().setActionChoice(
267 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action
268 .grouping.action.choice.CopyTtlInCaseBuilder().build()).build(),
269 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping
270 .ActionBuilder().setActionChoice(new SetMplsTtlCaseBuilder().setSetMplsTtlAction(
271 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203
272 .action.grouping.action.choice.set.mpls.ttl._case.SetMplsTtlActionBuilder()
273 .setMplsTtl(Uint8.ONE).build()).build()).build()), outActionList1);
277 * test of {@link GroupConvertor#convert(Group, VersionDatapathIdConvertorData)} }.
280 public void testGroupModConvertSortedBuckets() {
282 final int actionOrder = 0;
284 final var bucket = BindingMap.ordered(new BucketBuilder()
285 .setBucketId(new BucketId(Uint32.valueOf(4)))
286 .setWatchPort(Uint32.TWO)
287 .setWatchGroup(Uint32.ONE)
288 .setAction(BindingMap.of(new ActionBuilder()
290 .setAction(new OutputActionCaseBuilder()
291 .setOutputAction(new OutputActionBuilder().setOutputNodeConnector(new Uri("openflow:1:2")).build())
294 .build(), new BucketBuilder()
295 .setBucketId(new BucketId(Uint32.valueOf(3)))
296 .setWatchPort(Uint32.valueOf(6))
297 .setWatchGroup(Uint32.ONE)
298 .setAction(BindingMap.of(new ActionBuilder()
300 .setAction(new OutputActionCaseBuilder()
301 .setOutputAction(new OutputActionBuilder().setOutputNodeConnector(new Uri("openflow:1:6")).build())
304 .build(), new BucketBuilder()
305 .setBucketId(new BucketId(Uint32.TWO))
306 .setWatchPort(Uint32.valueOf(5))
307 .setWatchGroup(Uint32.ONE)
308 .setAction(BindingMap.of(new ActionBuilder()
310 .setAction(new OutputActionCaseBuilder()
311 .setOutputAction(new OutputActionBuilder().setOutputNodeConnector(new Uri("openflow:1:5")).build())
314 .build(), new BucketBuilder()
315 .setBucketId(new BucketId(Uint32.ONE))
316 .setWatchPort(Uint32.valueOf(4))
317 .setWatchGroup(Uint32.ONE)
318 .setAction(BindingMap.of(new ActionBuilder()
320 .setAction(new OutputActionCaseBuilder()
321 .setOutputAction(new OutputActionBuilder().setOutputNodeConnector(new Uri("openflow:1:4")).build())
324 .build(), new BucketBuilder()
325 .setBucketId(new BucketId(Uint32.ZERO))
326 .setWatchPort(Uint32.valueOf(3))
327 .setWatchGroup(Uint32.ONE)
328 .setAction(BindingMap.of(new ActionBuilder()
330 .setAction(new OutputActionCaseBuilder()
331 .setOutputAction(new OutputActionBuilder().setOutputNodeConnector(new Uri("openflow:1:3")).build())
337 final AddGroupInput input = new AddGroupInputBuilder()
338 .setGroupId(new GroupId(Uint32.ONE))
340 .setGroupType(GroupTypes.GroupFf)
341 .setBuckets(new BucketsBuilder().setBucket(bucket).build())
344 VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);
345 data.setDatapathId(Uint64.ONE);
347 final GroupModInputBuilder outAddGroupInput = convert(input, data);
349 final List<BucketsList> bucketList = outAddGroupInput.getBucketsList();
350 assertEquals(Uint32.ONE, bucketList.get(0).getWatchGroup());
351 assertEquals(Uint32.valueOf(3), bucketList.get(0).getWatchPort().getValue());
353 assertEquals(Uint32.ONE, bucketList.get(1).getWatchGroup());
354 assertEquals(Uint32.valueOf(4), bucketList.get(1).getWatchPort().getValue());
356 assertEquals(Uint32.ONE, bucketList.get(2).getWatchGroup());
357 assertEquals(Uint32.valueOf(5), bucketList.get(2).getWatchPort().getValue());
359 assertEquals(Uint32.ONE, bucketList.get(3).getWatchGroup());
360 assertEquals(Uint32.valueOf(6), bucketList.get(3).getWatchPort().getValue());
362 assertEquals(Uint32.ONE, bucketList.get(4).getWatchGroup());
363 assertEquals(Uint32.valueOf(2), bucketList.get(4).getWatchPort().getValue());
367 private static ActionBuilder assembleSetMplsTtlActionBuilder(final int actionOrder) {
368 final SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder();
369 setMplsTtlActionBuilder.setMplsTtl(Uint8.ONE);
370 final SetMplsTtlActionCaseBuilder setMplsTtlActionCaseBuilder = new SetMplsTtlActionCaseBuilder();
371 setMplsTtlActionCaseBuilder.setSetMplsTtlAction(setMplsTtlActionBuilder.build());
372 final ActionBuilder actionsB3 = new ActionBuilder();
373 actionsB3.setOrder(actionOrder).setAction(setMplsTtlActionCaseBuilder.build());
377 private static ActionBuilder assembleCopyTtlInBuilder(final int actionOrder) {
378 final CopyTtlInBuilder copyTtlB = new CopyTtlInBuilder();
379 final CopyTtlInCaseBuilder copyTtlInCaseBuilder = new CopyTtlInCaseBuilder();
380 copyTtlInCaseBuilder.setCopyTtlIn(copyTtlB.build());
381 final ActionBuilder actionsB2 = new ActionBuilder();
382 actionsB2.setOrder(actionOrder).setAction(copyTtlInCaseBuilder.build());
386 private static ActionBuilder assembleActionBuilder(final String groupName, final int actionOrder) {
387 final GroupActionBuilder groupActionBuilder = new GroupActionBuilder();
388 groupActionBuilder.setGroup(groupName);
389 final GroupActionCaseBuilder groupActionCaseBuilder = new GroupActionCaseBuilder();
390 groupActionCaseBuilder.setGroupAction(groupActionBuilder.build());
391 final ActionBuilder actionsBld = new ActionBuilder();
392 actionsBld.setOrder(actionOrder).setAction(groupActionCaseBuilder.build());
397 * test of {@link GroupConvertor#convert(Group, VersionDatapathIdConvertorData)} }.
400 public void testGroupModConvertorBucketwithNOWieghtValuesForGroupTypeAll() {
404 final AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
406 addGroupBuilder.setGroupId(new GroupId(Uint32.TEN));
408 addGroupBuilder.setGroupType(GroupTypes.GroupAll);
409 final List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action>
410 actionsList1 = new ArrayList<>();
412 final var actionsList = BindingMap.ordered(
414 assembleActionBuilder("005", actionOrder++).build(),
416 assembleActionBuilder("006", actionOrder++).build());
418 final BucketsBuilder bucketsB = new BucketsBuilder();
420 final BucketBuilder bucketB = new BucketBuilder();
422 bucketB.setAction(actionsList).withKey(new BucketKey(new BucketId(Uint32.ZERO)));
423 final Bucket bucket = bucketB.build();
425 final BucketBuilder bucketB1 = new BucketBuilder();
428 actionsList1.add(assembleCopyTtlInBuilder(actionOrder++).build());
430 actionsList1.add(assembleSetMplsTtlActionBuilder(actionOrder++).build());
432 bucketB1.setAction(actionsList).withKey(new BucketKey(new BucketId(Uint32.ONE)));
434 final Bucket bucket1 = bucketB1.build(); // second bucket
436 // List of bucket added to the Buckets
437 bucketsB.setBucket(BindingMap.of(bucket, bucket1));
438 final Buckets buckets = bucketsB.build();
440 addGroupBuilder.setBuckets(buckets);
442 VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);
443 data.setDatapathId(Uint64.ONE);
445 final GroupModInputBuilder outAddGroupInput = convert(addGroupBuilder.build(), data);
447 assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
448 assertEquals(GroupType.OFPGTALL, outAddGroupInput.getType());
450 assertEquals(10L, outAddGroupInput.getGroupId().getValue().longValue());
452 final List<Action> outActionList = outAddGroupInput.getBucketsList().get(0).getAction();
453 assertEquals(ImmutableList.of(new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203
454 .actions.grouping.ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
455 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action
456 .grouping.action.choice.group._case.GroupActionBuilder()
457 .setGroupId(Uint32.valueOf(5)).build())
459 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping
460 .ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
461 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203
462 .action.grouping.action.choice.group._case.GroupActionBuilder()
463 .setGroupId(Uint32.valueOf(6)).build()).build()).build()), outActionList);
465 final List<Action> outActionList1 = outAddGroupInput.getBucketsList().get(1).getAction();
466 assertEquals(ImmutableList.of(new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203
467 .actions.grouping.ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
468 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action
469 .grouping.action.choice.group._case.GroupActionBuilder()
470 .setGroupId(Uint32.valueOf(5)).build())
472 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping
473 .ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
474 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203
475 .action.grouping.action.choice.group._case.GroupActionBuilder()
476 .setGroupId(Uint32.valueOf(6)).build()).build()).build()), outActionList1);
479 private GroupModInputBuilder convert(final Group group, final VersionDatapathIdConvertorData data) {
480 final Optional<GroupModInputBuilder> outAddGroupInputOptional = convertorManager.convert(group, data);
481 assertTrue("Group convertor not found", outAddGroupInputOptional.isPresent());
482 return outAddGroupInputOptional.get();