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.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData;
20 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlInCaseBuilder;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.GroupActionCaseBuilder;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.OutputActionCaseBuilder;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetMplsTtlActionCaseBuilder;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.in._case.CopyTtlIn;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.in._case.CopyTtlInBuilder;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.group.action._case.GroupAction;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.group.action._case.GroupActionBuilder;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.output.action._case.OutputActionBuilder;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.mpls.ttl.action._case.SetMplsTtlAction;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.mpls.ttl.action._case.SetMplsTtlActionBuilder;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.AddGroupInput;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.AddGroupInputBuilder;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.BucketId;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.Group;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupId;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupTypes;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.Buckets;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.BucketsBuilder;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.Bucket;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.BucketBuilder;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.BucketKey;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.GroupCaseBuilder;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetMplsTtlCaseBuilder;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.Action;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.GroupModCommand;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.GroupType;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GroupModInputBuilder;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.buckets.grouping.BucketsList;
51 import org.opendaylight.yangtools.yang.common.Uint32;
52 import org.opendaylight.yangtools.yang.common.Uint64;
54 public class GroupConvertorTest {
55 private ConvertorManager convertorManager;
59 convertorManager = ConvertorManagerFactory.createDefaultManager();
63 * test of {@link GroupConvertor#convert(Group, VersionDatapathIdConvertorData)} }.
66 public void testGroupModConvertorwithallParameters() {
68 final AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
70 addGroupBuilder.setGroupId(new GroupId(10L));
72 addGroupBuilder.setGroupType(GroupTypes.GroupAll);
73 final List<Bucket> bucketList = new ArrayList<>();
74 final List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action>
75 actionsList = new ArrayList<>();
76 final List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action>
77 actionsList1 = new ArrayList<>();
82 final GroupActionBuilder groupActionBuilder = new GroupActionBuilder();
83 groupActionBuilder.setGroup("005");
84 final GroupAction groupIdaction = groupActionBuilder.build();
85 final ActionBuilder actionsB = new ActionBuilder();
86 actionsB.setOrder(actionOrder++).setAction(new GroupActionCaseBuilder().setGroupAction(groupIdaction).build());
89 final GroupActionBuilder groupActionBuilder1 = new GroupActionBuilder();
90 groupActionBuilder1.setGroup("006");
91 final GroupAction groupIdaction1 = groupActionBuilder.build();
92 final ActionBuilder actionsB1 = new ActionBuilder();
93 actionsB1.setOrder(actionOrder++).setAction(new GroupActionCaseBuilder()
94 .setGroupAction(groupIdaction1).build());
96 actionsList.add(actionsB.build());
97 actionsList.add(actionsB1.build());
100 final BucketsBuilder bucketsB = new BucketsBuilder();
102 final BucketBuilder bucketB = new BucketBuilder();
103 bucketB.setWeight(10);
104 bucketB.setWatchPort(20L);
105 bucketB.setWatchGroup(22L);
106 bucketB.withKey(new BucketKey(new BucketId(Uint32.ZERO)));
108 bucketB.setAction(actionsList);
109 final Bucket bucket = bucketB.build();
111 bucketList.add(bucket); // List of bucket
113 final BucketBuilder bucketB1 = new BucketBuilder();
114 bucketB1.setWeight(50);
115 bucketB1.setWatchPort(60L);
116 bucketB1.setWatchGroup(70L);
117 bucketB1.withKey(new BucketKey(new BucketId(Uint32.ONE)));
120 final CopyTtlInBuilder copyTtlB = new CopyTtlInBuilder();
121 final CopyTtlIn copyTtl = copyTtlB.build();
122 final ActionBuilder actionsB2 = new ActionBuilder();
123 actionsB2.setOrder(actionOrder++).setAction(new CopyTtlInCaseBuilder().setCopyTtlIn(copyTtl).build());
126 final SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder();
127 setMplsTtlActionBuilder.setMplsTtl((short) 0X1);
128 final SetMplsTtlAction setMAction = setMplsTtlActionBuilder.build();
129 final ActionBuilder actionsB3 = new ActionBuilder();
131 actionsB3.setOrder(actionOrder++).setAction(new SetMplsTtlActionCaseBuilder()
132 .setSetMplsTtlAction(setMAction).build());
135 actionsList1.add(actionsB2.build());
136 actionsList1.add(actionsB3.build());
138 bucketB1.setAction(actionsList);
140 final Bucket bucket1 = bucketB1.build(); // second bucket
142 bucketList.add(bucket1);
144 bucketsB.setBucket(bucketList);// List of bucket added to the Buckets
145 final Buckets buckets = bucketsB.build();
147 addGroupBuilder.setBuckets(buckets);
149 VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData((short) 0X4);
150 data.setDatapathId(Uint64.ONE);
152 final GroupModInputBuilder outAddGroupInput = convert(addGroupBuilder.build(), data);
154 assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
155 assertEquals(GroupType.OFPGTALL, outAddGroupInput.getType());
157 assertEquals(10L, outAddGroupInput.getGroupId().getValue().toJava());
158 assertEquals(10, outAddGroupInput.getBucketsList().get(0).getWeight().toJava());
159 assertEquals(20L, outAddGroupInput.getBucketsList().get(0).getWatchPort().getValue().toJava());
160 assertEquals(22L, outAddGroupInput.getBucketsList().get(0).getWatchGroup().toJava());
162 final List<Action> outActionList = outAddGroupInput.getBucketsList().get(0).getAction();
163 assertEquals(ImmutableList.of(new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action
164 .rev150203.actions.grouping.ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
165 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping
166 .action.choice.group._case.GroupActionBuilder().setGroupId(5L).build()).build()).build(),
167 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping
168 .ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
169 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action
170 .grouping.action.choice.group._case.GroupActionBuilder().setGroupId(5L).build()).build())
171 .build()), outActionList);
173 assertEquals(50, outAddGroupInput.getBucketsList().get(1).getWeight().toJava());
174 assertEquals(60, outAddGroupInput.getBucketsList().get(1).getWatchPort().getValue().toJava());
175 assertEquals(70L, outAddGroupInput.getBucketsList().get(1).getWatchGroup().toJava());
177 final List<Action> outActionList1 = outAddGroupInput.getBucketsList().get(1).getAction();
178 assertEquals(ImmutableList.of(new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action
179 .rev150203.actions.grouping.ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
180 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping
181 .action.choice.group._case.GroupActionBuilder().setGroupId(5L).build()).build()).build(),
182 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping
183 .ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
184 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action
185 .grouping.action.choice.group._case.GroupActionBuilder().setGroupId(5L).build()).build())
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(10L));
198 addGroupBuilder.setGroupType(GroupTypes.GroupAll);
200 VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData((short) 0X4);
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 AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
218 addGroupBuilder.setGroupId(new GroupId(10L));
220 addGroupBuilder.setGroupType(GroupTypes.GroupFf);
221 final List<Bucket> bucketList = new ArrayList<>();
222 final List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action>
223 actionsList = new ArrayList<>();
224 final List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action>
225 actionsList1 = new ArrayList<>();
228 actionsList.add(assembleActionBuilder("005", actionOrder++).build());
230 actionsList.add(assembleActionBuilder("006", actionOrder++).build());
231 // .. and mr.Bond is not coming today
233 final BucketsBuilder bucketsB = new BucketsBuilder();
235 final BucketBuilder bucketB = new BucketBuilder();
237 bucketB.setAction(actionsList).withKey(new BucketKey(new BucketId(Uint32.ZERO)));
238 final Bucket bucket = bucketB.build();
240 bucketList.add(bucket); // List of bucket
243 final BucketBuilder bucketB1 = new BucketBuilder();
246 actionsList1.add(assembleCopyTtlInBuilder(actionOrder++).build());
248 actionsList1.add(assembleSetMplsTtlActionBuilder(actionOrder++).build());
250 bucketB1.setAction(actionsList1).withKey(new BucketKey(new BucketId(Uint32.ONE)));
252 final Bucket bucket1 = bucketB1.build(); // second bucket
254 bucketList.add(bucket1);
256 bucketsB.setBucket(bucketList);// List of bucket added to the Buckets
257 final Buckets buckets = bucketsB.build();
259 addGroupBuilder.setBuckets(buckets);
261 VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData((short) 0X4);
262 data.setDatapathId(Uint64.ONE);
264 final GroupModInputBuilder outAddGroupInput = convert(addGroupBuilder.build(), data);
266 assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
267 assertEquals(GroupType.OFPGTFF, outAddGroupInput.getType());
269 assertEquals(10L, outAddGroupInput.getGroupId().getValue().longValue());
271 final List<Action> outActionList = outAddGroupInput.getBucketsList().get(0).getAction();
272 assertEquals(ImmutableList.of(new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203
273 .actions.grouping.ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
274 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action
275 .grouping.action.choice.group._case.GroupActionBuilder().setGroupId(5L).build()).build())
277 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping
278 .ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
279 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203
280 .action.grouping.action.choice.group._case.GroupActionBuilder().setGroupId(6L)
281 .build()).build()).build()), outActionList);
283 final List<Action> outActionList1 = outAddGroupInput.getBucketsList().get(1).getAction();
284 assertEquals(ImmutableList.of(new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203
285 .actions.grouping.ActionBuilder().setActionChoice(
286 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action
287 .grouping.action.choice.CopyTtlInCaseBuilder().build()).build(),
288 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping
289 .ActionBuilder().setActionChoice(new SetMplsTtlCaseBuilder().setSetMplsTtlAction(
290 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203
291 .action.grouping.action.choice.set.mpls.ttl._case.SetMplsTtlActionBuilder()
292 .setMplsTtl((short) 1).build()).build()).build()), outActionList1);
296 * test of {@link GroupConvertor#convert(Group, VersionDatapathIdConvertorData)} }.
299 public void testGroupModConvertSortedBuckets() {
301 final int actionOrder = 0;
303 final ArrayList<Bucket> bucket = new ArrayList<>();
305 bucket.add(new BucketBuilder()
306 .setBucketId(new BucketId((long) 4))
307 .setWatchPort((long)2)
308 .setWatchGroup((long) 1)
309 .setAction(ImmutableList.of(new ActionBuilder()
311 .setAction(new OutputActionCaseBuilder()
312 .setOutputAction(new OutputActionBuilder()
313 .setOutputNodeConnector(new Uri("openflow:1:2"))
319 bucket.add(new BucketBuilder()
320 .setBucketId(new BucketId((long) 3))
321 .setWatchPort((long)6)
322 .setWatchGroup((long) 1)
323 .setAction(ImmutableList.of(new ActionBuilder()
325 .setAction(new OutputActionCaseBuilder()
326 .setOutputAction(new OutputActionBuilder()
327 .setOutputNodeConnector(new Uri("openflow:1:6"))
333 bucket.add(new BucketBuilder()
334 .setBucketId(new BucketId((long) 2))
335 .setWatchPort((long)5)
336 .setWatchGroup((long) 1)
337 .setAction(ImmutableList.of(new ActionBuilder()
339 .setAction(new OutputActionCaseBuilder()
340 .setOutputAction(new OutputActionBuilder()
341 .setOutputNodeConnector(new Uri("openflow:1:5"))
347 bucket.add(new BucketBuilder()
348 .setBucketId(new BucketId((long) 1))
349 .setWatchPort((long)4)
350 .setWatchGroup((long) 1)
351 .setAction(ImmutableList.of(new ActionBuilder()
353 .setAction(new OutputActionCaseBuilder()
354 .setOutputAction(new OutputActionBuilder()
355 .setOutputNodeConnector(new Uri("openflow:1:4"))
361 bucket.add(new BucketBuilder()
362 .setBucketId(new BucketId((long) 0))
363 .setWatchPort((long)3)
364 .setWatchGroup((long) 1)
365 .setAction(ImmutableList.of(new ActionBuilder()
367 .setAction(new OutputActionCaseBuilder()
368 .setOutputAction(new OutputActionBuilder()
369 .setOutputNodeConnector(new Uri("openflow:1:3"))
376 final AddGroupInput input = new AddGroupInputBuilder()
377 .setGroupId(new GroupId((long) 1))
379 .setGroupType(GroupTypes.GroupFf)
380 .setBuckets(new BucketsBuilder()
385 VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData((short) 0X4);
386 data.setDatapathId(Uint64.ONE);
388 final GroupModInputBuilder outAddGroupInput = convert(input, data);
390 final List<BucketsList> bucketList = outAddGroupInput.getBucketsList();
391 assertEquals(Uint32.ONE, bucketList.get(0).getWatchGroup());
392 assertEquals(Uint32.valueOf(3), bucketList.get(0).getWatchPort().getValue());
394 assertEquals(Uint32.ONE, bucketList.get(1).getWatchGroup());
395 assertEquals(Uint32.valueOf(4), bucketList.get(1).getWatchPort().getValue());
397 assertEquals(Uint32.ONE, bucketList.get(2).getWatchGroup());
398 assertEquals(Uint32.valueOf(5), bucketList.get(2).getWatchPort().getValue());
400 assertEquals(Uint32.ONE, bucketList.get(3).getWatchGroup());
401 assertEquals(Uint32.valueOf(6), bucketList.get(3).getWatchPort().getValue());
403 assertEquals(Uint32.ONE, bucketList.get(4).getWatchGroup());
404 assertEquals(Uint32.valueOf(2), bucketList.get(4).getWatchPort().getValue());
408 private static ActionBuilder assembleSetMplsTtlActionBuilder(final int actionOrder) {
409 final SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder();
410 setMplsTtlActionBuilder.setMplsTtl((short) 0X1);
411 final SetMplsTtlActionCaseBuilder setMplsTtlActionCaseBuilder = new SetMplsTtlActionCaseBuilder();
412 setMplsTtlActionCaseBuilder.setSetMplsTtlAction(setMplsTtlActionBuilder.build());
413 final ActionBuilder actionsB3 = new ActionBuilder();
414 actionsB3.setOrder(actionOrder).setAction(setMplsTtlActionCaseBuilder.build());
418 private static ActionBuilder assembleCopyTtlInBuilder(final int actionOrder) {
419 final CopyTtlInBuilder copyTtlB = new CopyTtlInBuilder();
420 final CopyTtlInCaseBuilder copyTtlInCaseBuilder = new CopyTtlInCaseBuilder();
421 copyTtlInCaseBuilder.setCopyTtlIn(copyTtlB.build());
422 final ActionBuilder actionsB2 = new ActionBuilder();
423 actionsB2.setOrder(actionOrder).setAction(copyTtlInCaseBuilder.build());
427 private static ActionBuilder assembleActionBuilder(final String groupName, final int actionOrder) {
428 final GroupActionBuilder groupActionBuilder = new GroupActionBuilder();
429 groupActionBuilder.setGroup(groupName);
430 final GroupActionCaseBuilder groupActionCaseBuilder = new GroupActionCaseBuilder();
431 groupActionCaseBuilder.setGroupAction(groupActionBuilder.build());
432 final ActionBuilder actionsBld = new ActionBuilder();
433 actionsBld.setOrder(actionOrder).setAction(groupActionCaseBuilder.build());
438 * test of {@link GroupConvertor#convert(Group, VersionDatapathIdConvertorData)} }.
441 public void testGroupModConvertorBucketwithNOWieghtValuesForGroupTypeAll() {
445 final AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
447 addGroupBuilder.setGroupId(new GroupId(10L));
449 addGroupBuilder.setGroupType(GroupTypes.GroupAll);
450 final List<Bucket> bucketList = new ArrayList<>();
451 final List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action>
452 actionsList = new ArrayList<>();
453 final List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action>
454 actionsList1 = new ArrayList<>();
457 actionsList.add(assembleActionBuilder("005", actionOrder++).build());
459 actionsList.add(assembleActionBuilder("006", actionOrder++).build());
461 final BucketsBuilder bucketsB = new BucketsBuilder();
463 final BucketBuilder bucketB = new BucketBuilder();
465 bucketB.setAction(actionsList).withKey(new BucketKey(new BucketId(Uint32.ZERO)));
466 final Bucket bucket = bucketB.build();
468 bucketList.add(bucket); // List of bucket
470 final BucketBuilder bucketB1 = new BucketBuilder();
473 actionsList1.add(assembleCopyTtlInBuilder(actionOrder++).build());
475 actionsList1.add(assembleSetMplsTtlActionBuilder(actionOrder++).build());
477 bucketB1.setAction(actionsList).withKey(new BucketKey(new BucketId(Uint32.ONE)));
479 final Bucket bucket1 = bucketB1.build(); // second bucket
481 bucketList.add(bucket1);
483 bucketsB.setBucket(bucketList);// List of bucket added to the Buckets
484 final Buckets buckets = bucketsB.build();
486 addGroupBuilder.setBuckets(buckets);
488 VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData((short) 0X4);
489 data.setDatapathId(Uint64.ONE);
491 final GroupModInputBuilder outAddGroupInput = convert(addGroupBuilder.build(), data);
493 assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
494 assertEquals(GroupType.OFPGTALL, outAddGroupInput.getType());
496 assertEquals(10L, outAddGroupInput.getGroupId().getValue().longValue());
498 final List<Action> outActionList = outAddGroupInput.getBucketsList().get(0).getAction();
499 assertEquals(ImmutableList.of(new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203
500 .actions.grouping.ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
501 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action
502 .grouping.action.choice.group._case.GroupActionBuilder().setGroupId(5L).build())
504 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping
505 .ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
506 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203
507 .action.grouping.action.choice.group._case.GroupActionBuilder()
508 .setGroupId(6L).build()).build()).build()), outActionList);
510 final List<Action> outActionList1 = outAddGroupInput.getBucketsList().get(1).getAction();
511 assertEquals(ImmutableList.of(new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203
512 .actions.grouping.ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
513 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action
514 .grouping.action.choice.group._case.GroupActionBuilder().setGroupId(5L).build())
516 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping
517 .ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
518 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203
519 .action.grouping.action.choice.group._case.GroupActionBuilder()
520 .setGroupId(6L).build()).build()).build()), outActionList1);
523 private GroupModInputBuilder convert(final Group group, final VersionDatapathIdConvertorData data) {
524 final Optional<GroupModInputBuilder> outAddGroupInputOptional = convertorManager.convert(group, data);
525 assertTrue("Group convertor not found", outAddGroupInputOptional.isPresent());
526 return outAddGroupInputOptional.get();