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.Uint16;
52 import org.opendaylight.yangtools.yang.common.Uint32;
53 import org.opendaylight.yangtools.yang.common.Uint64;
54 import org.opendaylight.yangtools.yang.common.Uint8;
56 public class GroupConvertorTest {
57 private ConvertorManager convertorManager;
61 convertorManager = ConvertorManagerFactory.createDefaultManager();
65 * test of {@link GroupConvertor#convert(Group, VersionDatapathIdConvertorData)} }.
68 public void testGroupModConvertorwithallParameters() {
70 final AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
72 addGroupBuilder.setGroupId(new GroupId(Uint32.TEN));
74 addGroupBuilder.setGroupType(GroupTypes.GroupAll);
75 final List<Bucket> bucketList = new ArrayList<>();
76 final List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action>
77 actionsList = new ArrayList<>();
78 final List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action>
79 actionsList1 = new ArrayList<>();
84 final GroupActionBuilder groupActionBuilder = new GroupActionBuilder();
85 groupActionBuilder.setGroup("005");
86 final GroupAction groupIdaction = groupActionBuilder.build();
87 final ActionBuilder actionsB = new ActionBuilder();
88 actionsB.setOrder(actionOrder++).setAction(new GroupActionCaseBuilder().setGroupAction(groupIdaction).build());
91 final GroupActionBuilder groupActionBuilder1 = new GroupActionBuilder();
92 groupActionBuilder1.setGroup("006");
93 final GroupAction groupIdaction1 = groupActionBuilder.build();
94 final ActionBuilder actionsB1 = new ActionBuilder();
95 actionsB1.setOrder(actionOrder++).setAction(new GroupActionCaseBuilder()
96 .setGroupAction(groupIdaction1).build());
98 actionsList.add(actionsB.build());
99 actionsList.add(actionsB1.build());
102 final BucketsBuilder bucketsB = new BucketsBuilder();
104 final BucketBuilder bucketB = new BucketBuilder();
105 bucketB.setWeight(Uint16.TEN);
106 bucketB.setWatchPort(Uint32.valueOf(20));
107 bucketB.setWatchGroup(Uint32.valueOf(22));
108 bucketB.withKey(new BucketKey(new BucketId(Uint32.ZERO)));
110 bucketB.setAction(actionsList);
111 final Bucket bucket = bucketB.build();
113 bucketList.add(bucket); // List of bucket
115 final BucketBuilder bucketB1 = new BucketBuilder();
116 bucketB1.setWeight(Uint16.valueOf(50));
117 bucketB1.setWatchPort(Uint32.valueOf(60));
118 bucketB1.setWatchGroup(Uint32.valueOf(70));
119 bucketB1.withKey(new BucketKey(new BucketId(Uint32.ONE)));
122 final CopyTtlInBuilder copyTtlB = new CopyTtlInBuilder();
123 final CopyTtlIn copyTtl = copyTtlB.build();
124 final ActionBuilder actionsB2 = new ActionBuilder();
125 actionsB2.setOrder(actionOrder++).setAction(new CopyTtlInCaseBuilder().setCopyTtlIn(copyTtl).build());
128 final SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder();
129 setMplsTtlActionBuilder.setMplsTtl(Uint8.ONE);
130 final SetMplsTtlAction setMAction = setMplsTtlActionBuilder.build();
131 final ActionBuilder actionsB3 = new ActionBuilder();
133 actionsB3.setOrder(actionOrder++).setAction(new SetMplsTtlActionCaseBuilder()
134 .setSetMplsTtlAction(setMAction).build());
137 actionsList1.add(actionsB2.build());
138 actionsList1.add(actionsB3.build());
140 bucketB1.setAction(actionsList);
142 final Bucket bucket1 = bucketB1.build(); // second bucket
144 bucketList.add(bucket1);
146 bucketsB.setBucket(bucketList);// List of bucket added to the Buckets
147 final Buckets buckets = bucketsB.build();
149 addGroupBuilder.setBuckets(buckets);
151 VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData((short) 0X4);
152 data.setDatapathId(Uint64.ONE);
154 final GroupModInputBuilder outAddGroupInput = convert(addGroupBuilder.build(), data);
156 assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
157 assertEquals(GroupType.OFPGTALL, outAddGroupInput.getType());
159 assertEquals(10L, outAddGroupInput.getGroupId().getValue().toJava());
160 assertEquals(10, outAddGroupInput.getBucketsList().get(0).getWeight().toJava());
161 assertEquals(20L, outAddGroupInput.getBucketsList().get(0).getWatchPort().getValue().toJava());
162 assertEquals(22L, outAddGroupInput.getBucketsList().get(0).getWatchGroup().toJava());
164 final List<Action> outActionList = outAddGroupInput.getBucketsList().get(0).getAction();
165 assertEquals(ImmutableList.of(new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action
166 .rev150203.actions.grouping.ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
167 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping
168 .action.choice.group._case.GroupActionBuilder().setGroupId(Uint32.valueOf(5)).build())
170 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping
171 .ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
172 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action
173 .grouping.action.choice.group._case.GroupActionBuilder().setGroupId(Uint32.valueOf(5))
175 .build()), outActionList);
177 assertEquals(50, outAddGroupInput.getBucketsList().get(1).getWeight().toJava());
178 assertEquals(60, outAddGroupInput.getBucketsList().get(1).getWatchPort().getValue().toJava());
179 assertEquals(70L, outAddGroupInput.getBucketsList().get(1).getWatchGroup().toJava());
181 final List<Action> outActionList1 = outAddGroupInput.getBucketsList().get(1).getAction();
182 assertEquals(ImmutableList.of(new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action
183 .rev150203.actions.grouping.ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
184 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping
185 .action.choice.group._case.GroupActionBuilder().setGroupId(Uint32.valueOf(5)).build()).build())
187 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping
188 .ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
189 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action
190 .grouping.action.choice.group._case.GroupActionBuilder().setGroupId(Uint32.valueOf(5))
192 .build()), outActionList1);
196 * test of {@link GroupConvertor#convert(Group, VersionDatapathIdConvertorData)} }.
199 public void testGroupModConvertorNoBucket() {
200 final AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
202 addGroupBuilder.setGroupId(new GroupId(Uint32.TEN));
204 addGroupBuilder.setGroupType(GroupTypes.GroupAll);
206 VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData((short) 0X4);
207 data.setDatapathId(Uint64.ONE);
209 final GroupModInputBuilder outAddGroupInput = convert(addGroupBuilder.build(), data);
210 assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
211 assertEquals(GroupType.OFPGTALL, outAddGroupInput.getType());
215 * test of {@link GroupConvertor#convert(Group, VersionDatapathIdConvertorData)} }.
218 public void testGroupModConvertorBucketwithNOWieghtValuesForGroupTypeFastFailure() {
222 final AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
224 addGroupBuilder.setGroupId(new GroupId(Uint32.TEN));
226 addGroupBuilder.setGroupType(GroupTypes.GroupFf);
227 final List<Bucket> bucketList = new ArrayList<>();
228 final List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action>
229 actionsList = new ArrayList<>();
230 final List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action>
231 actionsList1 = new ArrayList<>();
234 actionsList.add(assembleActionBuilder("005", actionOrder++).build());
236 actionsList.add(assembleActionBuilder("006", actionOrder++).build());
237 // .. and mr.Bond is not coming today
239 final BucketsBuilder bucketsB = new BucketsBuilder();
241 final BucketBuilder bucketB = new BucketBuilder();
243 bucketB.setAction(actionsList).withKey(new BucketKey(new BucketId(Uint32.ZERO)));
244 final Bucket bucket = bucketB.build();
246 bucketList.add(bucket); // List of bucket
249 final BucketBuilder bucketB1 = new BucketBuilder();
252 actionsList1.add(assembleCopyTtlInBuilder(actionOrder++).build());
254 actionsList1.add(assembleSetMplsTtlActionBuilder(actionOrder++).build());
256 bucketB1.setAction(actionsList1).withKey(new BucketKey(new BucketId(Uint32.ONE)));
258 final Bucket bucket1 = bucketB1.build(); // second bucket
260 bucketList.add(bucket1);
262 bucketsB.setBucket(bucketList);// List of bucket added to the Buckets
263 final Buckets buckets = bucketsB.build();
265 addGroupBuilder.setBuckets(buckets);
267 VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData((short) 0X4);
268 data.setDatapathId(Uint64.ONE);
270 final GroupModInputBuilder outAddGroupInput = convert(addGroupBuilder.build(), data);
272 assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
273 assertEquals(GroupType.OFPGTFF, outAddGroupInput.getType());
275 assertEquals(10L, outAddGroupInput.getGroupId().getValue().longValue());
277 final List<Action> outActionList = outAddGroupInput.getBucketsList().get(0).getAction();
278 assertEquals(ImmutableList.of(new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203
279 .actions.grouping.ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
280 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action
281 .grouping.action.choice.group._case.GroupActionBuilder().setGroupId(Uint32.valueOf(5L))
284 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping
285 .ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
286 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203
287 .action.grouping.action.choice.group._case.GroupActionBuilder()
288 .setGroupId(Uint32.valueOf(6)).build()).build()).build()), outActionList);
290 final List<Action> outActionList1 = outAddGroupInput.getBucketsList().get(1).getAction();
291 assertEquals(ImmutableList.of(new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203
292 .actions.grouping.ActionBuilder().setActionChoice(
293 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action
294 .grouping.action.choice.CopyTtlInCaseBuilder().build()).build(),
295 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping
296 .ActionBuilder().setActionChoice(new SetMplsTtlCaseBuilder().setSetMplsTtlAction(
297 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203
298 .action.grouping.action.choice.set.mpls.ttl._case.SetMplsTtlActionBuilder()
299 .setMplsTtl(Uint8.ONE).build()).build()).build()), outActionList1);
303 * test of {@link GroupConvertor#convert(Group, VersionDatapathIdConvertorData)} }.
306 public void testGroupModConvertSortedBuckets() {
308 final int actionOrder = 0;
310 final ArrayList<Bucket> bucket = new ArrayList<>();
312 bucket.add(new BucketBuilder()
313 .setBucketId(new BucketId(Uint32.valueOf(4)))
314 .setWatchPort(Uint32.TWO)
315 .setWatchGroup(Uint32.ONE)
316 .setAction(ImmutableList.of(new ActionBuilder()
318 .setAction(new OutputActionCaseBuilder()
319 .setOutputAction(new OutputActionBuilder()
320 .setOutputNodeConnector(new Uri("openflow:1:2"))
326 bucket.add(new BucketBuilder()
327 .setBucketId(new BucketId(Uint32.valueOf(3)))
328 .setWatchPort(Uint32.valueOf(6))
329 .setWatchGroup(Uint32.ONE)
330 .setAction(ImmutableList.of(new ActionBuilder()
332 .setAction(new OutputActionCaseBuilder()
333 .setOutputAction(new OutputActionBuilder()
334 .setOutputNodeConnector(new Uri("openflow:1:6"))
340 bucket.add(new BucketBuilder()
341 .setBucketId(new BucketId(Uint32.TWO))
342 .setWatchPort(Uint32.valueOf(5))
343 .setWatchGroup(Uint32.ONE)
344 .setAction(ImmutableList.of(new ActionBuilder()
346 .setAction(new OutputActionCaseBuilder()
347 .setOutputAction(new OutputActionBuilder()
348 .setOutputNodeConnector(new Uri("openflow:1:5"))
354 bucket.add(new BucketBuilder()
355 .setBucketId(new BucketId(Uint32.ONE))
356 .setWatchPort(Uint32.valueOf(4))
357 .setWatchGroup(Uint32.ONE)
358 .setAction(ImmutableList.of(new ActionBuilder()
360 .setAction(new OutputActionCaseBuilder()
361 .setOutputAction(new OutputActionBuilder()
362 .setOutputNodeConnector(new Uri("openflow:1:4"))
368 bucket.add(new BucketBuilder()
369 .setBucketId(new BucketId(Uint32.ZERO))
370 .setWatchPort(Uint32.valueOf(3))
371 .setWatchGroup(Uint32.ONE)
372 .setAction(ImmutableList.of(new ActionBuilder()
374 .setAction(new OutputActionCaseBuilder()
375 .setOutputAction(new OutputActionBuilder()
376 .setOutputNodeConnector(new Uri("openflow:1:3"))
383 final AddGroupInput input = new AddGroupInputBuilder()
384 .setGroupId(new GroupId(Uint32.ONE))
386 .setGroupType(GroupTypes.GroupFf)
387 .setBuckets(new BucketsBuilder()
392 VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData((short) 0X4);
393 data.setDatapathId(Uint64.ONE);
395 final GroupModInputBuilder outAddGroupInput = convert(input, data);
397 final List<BucketsList> bucketList = outAddGroupInput.getBucketsList();
398 assertEquals(Uint32.ONE, bucketList.get(0).getWatchGroup());
399 assertEquals(Uint32.valueOf(3), bucketList.get(0).getWatchPort().getValue());
401 assertEquals(Uint32.ONE, bucketList.get(1).getWatchGroup());
402 assertEquals(Uint32.valueOf(4), bucketList.get(1).getWatchPort().getValue());
404 assertEquals(Uint32.ONE, bucketList.get(2).getWatchGroup());
405 assertEquals(Uint32.valueOf(5), bucketList.get(2).getWatchPort().getValue());
407 assertEquals(Uint32.ONE, bucketList.get(3).getWatchGroup());
408 assertEquals(Uint32.valueOf(6), bucketList.get(3).getWatchPort().getValue());
410 assertEquals(Uint32.ONE, bucketList.get(4).getWatchGroup());
411 assertEquals(Uint32.valueOf(2), bucketList.get(4).getWatchPort().getValue());
415 private static ActionBuilder assembleSetMplsTtlActionBuilder(final int actionOrder) {
416 final SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder();
417 setMplsTtlActionBuilder.setMplsTtl(Uint8.ONE);
418 final SetMplsTtlActionCaseBuilder setMplsTtlActionCaseBuilder = new SetMplsTtlActionCaseBuilder();
419 setMplsTtlActionCaseBuilder.setSetMplsTtlAction(setMplsTtlActionBuilder.build());
420 final ActionBuilder actionsB3 = new ActionBuilder();
421 actionsB3.setOrder(actionOrder).setAction(setMplsTtlActionCaseBuilder.build());
425 private static ActionBuilder assembleCopyTtlInBuilder(final int actionOrder) {
426 final CopyTtlInBuilder copyTtlB = new CopyTtlInBuilder();
427 final CopyTtlInCaseBuilder copyTtlInCaseBuilder = new CopyTtlInCaseBuilder();
428 copyTtlInCaseBuilder.setCopyTtlIn(copyTtlB.build());
429 final ActionBuilder actionsB2 = new ActionBuilder();
430 actionsB2.setOrder(actionOrder).setAction(copyTtlInCaseBuilder.build());
434 private static ActionBuilder assembleActionBuilder(final String groupName, final int actionOrder) {
435 final GroupActionBuilder groupActionBuilder = new GroupActionBuilder();
436 groupActionBuilder.setGroup(groupName);
437 final GroupActionCaseBuilder groupActionCaseBuilder = new GroupActionCaseBuilder();
438 groupActionCaseBuilder.setGroupAction(groupActionBuilder.build());
439 final ActionBuilder actionsBld = new ActionBuilder();
440 actionsBld.setOrder(actionOrder).setAction(groupActionCaseBuilder.build());
445 * test of {@link GroupConvertor#convert(Group, VersionDatapathIdConvertorData)} }.
448 public void testGroupModConvertorBucketwithNOWieghtValuesForGroupTypeAll() {
452 final AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
454 addGroupBuilder.setGroupId(new GroupId(Uint32.TEN));
456 addGroupBuilder.setGroupType(GroupTypes.GroupAll);
457 final List<Bucket> bucketList = new ArrayList<>();
458 final List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action>
459 actionsList = new ArrayList<>();
460 final List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action>
461 actionsList1 = new ArrayList<>();
464 actionsList.add(assembleActionBuilder("005", actionOrder++).build());
466 actionsList.add(assembleActionBuilder("006", actionOrder++).build());
468 final BucketsBuilder bucketsB = new BucketsBuilder();
470 final BucketBuilder bucketB = new BucketBuilder();
472 bucketB.setAction(actionsList).withKey(new BucketKey(new BucketId(Uint32.ZERO)));
473 final Bucket bucket = bucketB.build();
475 bucketList.add(bucket); // List of bucket
477 final BucketBuilder bucketB1 = new BucketBuilder();
480 actionsList1.add(assembleCopyTtlInBuilder(actionOrder++).build());
482 actionsList1.add(assembleSetMplsTtlActionBuilder(actionOrder++).build());
484 bucketB1.setAction(actionsList).withKey(new BucketKey(new BucketId(Uint32.ONE)));
486 final Bucket bucket1 = bucketB1.build(); // second bucket
488 bucketList.add(bucket1);
490 bucketsB.setBucket(bucketList);// List of bucket added to the Buckets
491 final Buckets buckets = bucketsB.build();
493 addGroupBuilder.setBuckets(buckets);
495 VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData((short) 0X4);
496 data.setDatapathId(Uint64.ONE);
498 final GroupModInputBuilder outAddGroupInput = convert(addGroupBuilder.build(), data);
500 assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
501 assertEquals(GroupType.OFPGTALL, outAddGroupInput.getType());
503 assertEquals(10L, outAddGroupInput.getGroupId().getValue().longValue());
505 final List<Action> outActionList = outAddGroupInput.getBucketsList().get(0).getAction();
506 assertEquals(ImmutableList.of(new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203
507 .actions.grouping.ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
508 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action
509 .grouping.action.choice.group._case.GroupActionBuilder()
510 .setGroupId(Uint32.valueOf(5)).build())
512 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping
513 .ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
514 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203
515 .action.grouping.action.choice.group._case.GroupActionBuilder()
516 .setGroupId(Uint32.valueOf(6)).build()).build()).build()), outActionList);
518 final List<Action> outActionList1 = outAddGroupInput.getBucketsList().get(1).getAction();
519 assertEquals(ImmutableList.of(new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203
520 .actions.grouping.ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
521 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action
522 .grouping.action.choice.group._case.GroupActionBuilder()
523 .setGroupId(Uint32.valueOf(5)).build())
525 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping
526 .ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
527 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203
528 .action.grouping.action.choice.group._case.GroupActionBuilder()
529 .setGroupId(Uint32.valueOf(6)).build()).build()).build()), outActionList1);
532 private GroupModInputBuilder convert(final Group group, final VersionDatapathIdConvertorData data) {
533 final Optional<GroupModInputBuilder> outAddGroupInputOptional = convertorManager.convert(group, data);
534 assertTrue("Group convertor not found", outAddGroupInputOptional.isPresent());
535 return outAddGroupInputOptional.get();