Fix checkstyle
[openflowplugin.git] / openflowplugin / src / test / java / org / opendaylight / openflowplugin / openflow / md / core / sal / convertor / GroupConvertorTest.java
1 /*
2  * Copyright (c) 2014 Ericsson India Global Services Pvt Ltd. and others.  All rights reserved.
3  *
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
7  */
8 package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor;
9
10 import static org.junit.Assert.assertEquals;
11 import static org.junit.Assert.assertTrue;
12
13 import com.google.common.collect.ImmutableList;
14 import java.math.BigInteger;
15 import java.util.ArrayList;
16 import java.util.List;
17 import java.util.Optional;
18 import org.junit.Before;
19 import org.junit.Test;
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.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
52 public class GroupConvertorTest {
53     private ConvertorManager convertorManager;
54
55     @Before
56     public void setUp() {
57         convertorManager = ConvertorManagerFactory.createDefaultManager();
58     }
59
60     /**
61      * test of {@link GroupConvertor#convert(Group, VersionDatapathIdConvertorData)} }.
62      */
63     @Test
64     public void testGroupModConvertorwithallParameters() {
65
66         final AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
67
68         addGroupBuilder.setGroupId(new GroupId(10L));
69
70         addGroupBuilder.setGroupType(GroupTypes.GroupAll);
71         final List<Bucket> bucketList = new ArrayList<>();
72         final List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action>
73             actionsList = new ArrayList<>();
74         final List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action>
75             actionsList1 = new ArrayList<>();
76
77         int actionOrder = 0;
78
79         // Action1
80         final GroupActionBuilder groupActionBuilder = new GroupActionBuilder();
81         groupActionBuilder.setGroup("005");
82         final GroupAction groupIdaction = groupActionBuilder.build();
83         final ActionBuilder actionsB = new ActionBuilder();
84         actionsB.setOrder(actionOrder++).setAction(new GroupActionCaseBuilder().setGroupAction(groupIdaction).build());
85
86         // Action2:
87         final GroupActionBuilder groupActionBuilder1 = new GroupActionBuilder();
88         groupActionBuilder1.setGroup("006");
89         final GroupAction groupIdaction1 = groupActionBuilder.build();
90         final ActionBuilder actionsB1 = new ActionBuilder();
91         actionsB1.setOrder(actionOrder++).setAction(new GroupActionCaseBuilder()
92                 .setGroupAction(groupIdaction1).build());
93
94         actionsList.add(actionsB.build());
95         actionsList.add(actionsB1.build());
96
97
98         final BucketsBuilder bucketsB = new BucketsBuilder();
99
100         final BucketBuilder bucketB = new BucketBuilder();
101         bucketB.setWeight(10);
102         bucketB.setWatchPort(20L);
103         bucketB.setWatchGroup(22L);
104
105         bucketB.setAction(actionsList);
106         final Bucket bucket = bucketB.build();
107
108         bucketList.add(bucket); // List of bucket
109
110         final BucketBuilder bucketB1 = new BucketBuilder();
111         bucketB1.setWeight(50);
112         bucketB1.setWatchPort(60L);
113         bucketB1.setWatchGroup(70L);
114
115         // Action1
116         final CopyTtlInBuilder copyTtlB = new CopyTtlInBuilder();
117         final CopyTtlIn copyTtl = copyTtlB.build();
118         final ActionBuilder actionsB2 = new ActionBuilder();
119         actionsB2.setOrder(actionOrder++).setAction(new CopyTtlInCaseBuilder().setCopyTtlIn(copyTtl).build());
120
121         // Action2:
122         final SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder();
123         setMplsTtlActionBuilder.setMplsTtl((short) 0X1);
124         final SetMplsTtlAction setMAction = setMplsTtlActionBuilder.build();
125         final ActionBuilder actionsB3 = new ActionBuilder();
126
127         actionsB3.setOrder(actionOrder++).setAction(new SetMplsTtlActionCaseBuilder()
128                 .setSetMplsTtlAction(setMAction).build());
129
130
131         actionsList1.add(actionsB2.build());
132         actionsList1.add(actionsB3.build());
133
134         bucketB1.setAction(actionsList);
135
136         final Bucket bucket1 = bucketB1.build(); // second bucket
137
138         bucketList.add(bucket1);
139
140         bucketsB.setBucket(bucketList);// List of bucket added to the Buckets
141         final Buckets buckets = bucketsB.build();
142
143         addGroupBuilder.setBuckets(buckets);
144
145         VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData((short) 0X4);
146         data.setDatapathId(BigInteger.valueOf(1));
147
148         final GroupModInputBuilder outAddGroupInput = convert(addGroupBuilder.build(), data);
149
150         assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
151         assertEquals(GroupType.OFPGTALL, outAddGroupInput.getType());
152
153         assertEquals(10L, (long) outAddGroupInput.getGroupId().getValue());
154         assertEquals(10, (int) outAddGroupInput.getBucketsList().get(0).getWeight());
155         assertEquals(20L, (long) outAddGroupInput.getBucketsList().get(0).getWatchPort().getValue());
156         assertEquals((Long) 22L, outAddGroupInput.getBucketsList().get(0).getWatchGroup());
157
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(5L).build()).build()).build(),
163                     new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping
164                     .ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
165                             new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action
166                             .grouping.action.choice.group._case.GroupActionBuilder().setGroupId(5L).build()).build())
167                     .build()), outActionList);
168
169         assertEquals((Integer) 50, outAddGroupInput.getBucketsList().get(1).getWeight());
170         assertEquals((long) 60, (long) outAddGroupInput.getBucketsList().get(1).getWatchPort().getValue());
171         assertEquals((Long) 70L, outAddGroupInput.getBucketsList().get(1).getWatchGroup());
172
173         final List<Action> outActionList1 = outAddGroupInput.getBucketsList().get(1).getAction();
174         assertEquals(ImmutableList.of(new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action
175                     .rev150203.actions.grouping.ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
176                 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping
177                         .action.choice.group._case.GroupActionBuilder().setGroupId(5L).build()).build()).build(),
178                     new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping
179                     .ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
180                             new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action
181                             .grouping.action.choice.group._case.GroupActionBuilder().setGroupId(5L).build()).build())
182                     .build()), outActionList1);
183     }
184
185     /**
186      * test of {@link GroupConvertor#convert(Group, VersionDatapathIdConvertorData)} }.
187      */
188     @Test
189     public void testGroupModConvertorNoBucket() {
190         final AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
191
192         addGroupBuilder.setGroupId(new GroupId(10L));
193
194         addGroupBuilder.setGroupType(GroupTypes.GroupAll);
195
196         VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData((short) 0X4);
197         data.setDatapathId(BigInteger.valueOf(1));
198
199         final GroupModInputBuilder outAddGroupInput = convert(addGroupBuilder.build(), data);
200         assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
201         assertEquals(GroupType.OFPGTALL, outAddGroupInput.getType());
202     }
203
204     /**
205      * test of {@link GroupConvertor#convert(Group, VersionDatapathIdConvertorData)} }.
206      */
207     @Test
208     public void testGroupModConvertorBucketwithNOWieghtValuesForGroupTypeFastFailure() {
209
210         int actionOrder = 0;
211
212         final AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
213
214         addGroupBuilder.setGroupId(new GroupId(10L));
215
216         addGroupBuilder.setGroupType(GroupTypes.GroupFf);
217         final List<Bucket> bucketList = new ArrayList<>();
218         final List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action>
219             actionsList = new ArrayList<>();
220         final List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action>
221             actionsList1 = new ArrayList<>();
222
223         // Action1: 005
224         actionsList.add(assembleActionBuilder("005", actionOrder++).build());
225         // Action2: 006
226         actionsList.add(assembleActionBuilder("006", actionOrder++).build());
227         // .. and mr.Bond is not coming today
228
229         final BucketsBuilder bucketsB = new BucketsBuilder();
230
231         final BucketBuilder bucketB = new BucketBuilder();
232
233         bucketB.setAction(actionsList);
234         final Bucket bucket = bucketB.build();
235
236         bucketList.add(bucket); // List of bucket
237
238
239         final BucketBuilder bucketB1 = new BucketBuilder();
240
241         // Action1
242         actionsList1.add(assembleCopyTtlInBuilder(actionOrder++).build());
243         // Action2:
244         actionsList1.add(assembleSetMplsTtlActionBuilder(actionOrder++).build());
245
246         bucketB1.setAction(actionsList1);
247
248         final Bucket bucket1 = bucketB1.build(); // second bucket
249
250         bucketList.add(bucket1);
251
252         bucketsB.setBucket(bucketList);// List of bucket added to the Buckets
253         final Buckets buckets = bucketsB.build();
254
255         addGroupBuilder.setBuckets(buckets);
256
257         VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData((short) 0X4);
258         data.setDatapathId(BigInteger.valueOf(1));
259
260         final GroupModInputBuilder outAddGroupInput = convert(addGroupBuilder.build(), data);
261
262         assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
263         assertEquals(GroupType.OFPGTFF, outAddGroupInput.getType());
264
265         assertEquals(10L, outAddGroupInput.getGroupId().getValue().longValue());
266
267         final List<Action> outActionList = outAddGroupInput.getBucketsList().get(0).getAction();
268         assertEquals(ImmutableList.of(new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203
269                     .actions.grouping.ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
270                             new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action
271                             .grouping.action.choice.group._case.GroupActionBuilder().setGroupId(5L).build()).build())
272                     .build(),
273                     new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping
274                             .ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
275                                     new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203
276                                     .action.grouping.action.choice.group._case.GroupActionBuilder().setGroupId(6L)
277                                     .build()).build()).build()), outActionList);
278
279         final List<Action> outActionList1 = outAddGroupInput.getBucketsList().get(1).getAction();
280         assertEquals(ImmutableList.of(new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203
281                     .actions.grouping.ActionBuilder().setActionChoice(
282                             new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action
283                             .grouping.action.choice.CopyTtlInCaseBuilder().build()).build(),
284                     new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping
285                             .ActionBuilder().setActionChoice(new SetMplsTtlCaseBuilder().setSetMplsTtlAction(
286                                     new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203
287                                             .action.grouping.action.choice.set.mpls.ttl._case.SetMplsTtlActionBuilder()
288                                             .setMplsTtl((short) 1).build()).build()).build()), outActionList1);
289     }
290
291     /**
292      * test of {@link GroupConvertor#convert(Group, VersionDatapathIdConvertorData)} }.
293      */
294     @Test
295     public void testGroupModConvertSortedBuckets() {
296
297         final int actionOrder = 0;
298
299         final ArrayList<Bucket> bucket = new ArrayList<>();
300
301         bucket.add(new BucketBuilder()
302                 .setBucketId(new BucketId((long) 4))
303                 .setWatchPort((long)2)
304                 .setWatchGroup((long) 1)
305                 .setAction(ImmutableList.of(new ActionBuilder()
306                         .setOrder(0)
307                         .setAction(new OutputActionCaseBuilder()
308                                 .setOutputAction(new OutputActionBuilder()
309                                         .setOutputNodeConnector(new Uri("openflow:1:2"))
310                                         .build())
311                                 .build())
312                         .build()))
313                 .build());
314
315         bucket.add(new BucketBuilder()
316                 .setBucketId(new BucketId((long) 3))
317                 .setWatchPort((long)6)
318                 .setWatchGroup((long) 1)
319                 .setAction(ImmutableList.of(new ActionBuilder()
320                         .setOrder(0)
321                         .setAction(new OutputActionCaseBuilder()
322                                 .setOutputAction(new OutputActionBuilder()
323                                         .setOutputNodeConnector(new Uri("openflow:1:6"))
324                                         .build())
325                                 .build())
326                         .build()))
327                 .build());
328
329         bucket.add(new BucketBuilder()
330                 .setBucketId(new BucketId((long) 2))
331                 .setWatchPort((long)5)
332                 .setWatchGroup((long) 1)
333                 .setAction(ImmutableList.of(new ActionBuilder()
334                         .setOrder(0)
335                         .setAction(new OutputActionCaseBuilder()
336                                 .setOutputAction(new OutputActionBuilder()
337                                         .setOutputNodeConnector(new Uri("openflow:1:5"))
338                                         .build())
339                                 .build())
340                         .build()))
341                 .build());
342
343         bucket.add(new BucketBuilder()
344                 .setBucketId(new BucketId((long) 1))
345                 .setWatchPort((long)4)
346                 .setWatchGroup((long) 1)
347                 .setAction(ImmutableList.of(new ActionBuilder()
348                         .setOrder(0)
349                         .setAction(new OutputActionCaseBuilder()
350                                 .setOutputAction(new OutputActionBuilder()
351                                         .setOutputNodeConnector(new Uri("openflow:1:4"))
352                                         .build())
353                                 .build())
354                         .build()))
355                 .build());
356
357         bucket.add(new BucketBuilder()
358                 .setBucketId(new BucketId((long) 0))
359                 .setWatchPort((long)3)
360                 .setWatchGroup((long) 1)
361                 .setAction(ImmutableList.of(new ActionBuilder()
362                         .setOrder(0)
363                         .setAction(new OutputActionCaseBuilder()
364                                 .setOutputAction(new OutputActionBuilder()
365                                         .setOutputNodeConnector(new Uri("openflow:1:3"))
366                                         .build())
367                                 .build())
368                         .build()))
369                 .build());
370
371
372         final AddGroupInput input = new AddGroupInputBuilder()
373                 .setGroupId(new GroupId((long) 1))
374                 .setGroupName("Foo")
375                 .setGroupType(GroupTypes.GroupFf)
376                 .setBuckets(new BucketsBuilder()
377                         .setBucket(bucket)
378                         .build())
379                 .build();
380
381         VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData((short) 0X4);
382         data.setDatapathId(BigInteger.valueOf(1));
383
384         final GroupModInputBuilder outAddGroupInput = convert(input, data);
385
386         final List<BucketsList> bucketList = outAddGroupInput.getBucketsList();
387         assertEquals(Long.valueOf(1), bucketList.get(0).getWatchGroup());
388         assertEquals(Long.valueOf(3), bucketList.get(0).getWatchPort().getValue());
389
390         assertEquals(Long.valueOf(1), bucketList.get(1).getWatchGroup());
391         assertEquals(Long.valueOf(4), bucketList.get(1).getWatchPort().getValue());
392
393         assertEquals(Long.valueOf(1), bucketList.get(2).getWatchGroup());
394         assertEquals(Long.valueOf(5), bucketList.get(2).getWatchPort().getValue());
395
396         assertEquals(Long.valueOf(1), bucketList.get(3).getWatchGroup());
397         assertEquals(Long.valueOf(6), bucketList.get(3).getWatchPort().getValue());
398
399         assertEquals(Long.valueOf(1), bucketList.get(4).getWatchGroup());
400         assertEquals(Long.valueOf(2), bucketList.get(4).getWatchPort().getValue());
401
402     }
403
404     private static ActionBuilder assembleSetMplsTtlActionBuilder(final int actionOrder) {
405         final SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder();
406         setMplsTtlActionBuilder.setMplsTtl((short) 0X1);
407         final SetMplsTtlActionCaseBuilder setMplsTtlActionCaseBuilder = new SetMplsTtlActionCaseBuilder();
408         setMplsTtlActionCaseBuilder.setSetMplsTtlAction(setMplsTtlActionBuilder.build());
409         final ActionBuilder actionsB3 = new ActionBuilder();
410         actionsB3.setOrder(actionOrder).setAction(setMplsTtlActionCaseBuilder.build());
411         return actionsB3;
412     }
413
414     private static ActionBuilder assembleCopyTtlInBuilder(final int actionOrder) {
415         final CopyTtlInBuilder copyTtlB = new CopyTtlInBuilder();
416         final CopyTtlInCaseBuilder copyTtlInCaseBuilder = new CopyTtlInCaseBuilder();
417         copyTtlInCaseBuilder.setCopyTtlIn(copyTtlB.build());
418         final ActionBuilder actionsB2 = new ActionBuilder();
419         actionsB2.setOrder(actionOrder).setAction(copyTtlInCaseBuilder.build());
420         return actionsB2;
421     }
422
423     private static ActionBuilder assembleActionBuilder(final String groupName, final int actionOrder) {
424         final GroupActionBuilder groupActionBuilder = new GroupActionBuilder();
425         groupActionBuilder.setGroup(groupName);
426         final GroupActionCaseBuilder groupActionCaseBuilder = new GroupActionCaseBuilder();
427         groupActionCaseBuilder.setGroupAction(groupActionBuilder.build());
428         final ActionBuilder actionsBld = new ActionBuilder();
429         actionsBld.setOrder(actionOrder).setAction(groupActionCaseBuilder.build());
430         return actionsBld;
431     }
432
433     /**
434      * test of {@link GroupConvertor#convert(Group, VersionDatapathIdConvertorData)} }.
435      */
436     @Test
437     public void testGroupModConvertorBucketwithNOWieghtValuesForGroupTypeAll() {
438
439         int actionOrder = 0;
440
441         final AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
442
443         addGroupBuilder.setGroupId(new GroupId(10L));
444
445         addGroupBuilder.setGroupType(GroupTypes.GroupAll);
446         final List<Bucket> bucketList = new ArrayList<>();
447         final List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action>
448             actionsList = new ArrayList<>();
449         final List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action>
450             actionsList1 = new ArrayList<>();
451
452         // Action1
453         actionsList.add(assembleActionBuilder("005", actionOrder++).build());
454         // Action2:
455         actionsList.add(assembleActionBuilder("006", actionOrder++).build());
456
457         final BucketsBuilder bucketsB = new BucketsBuilder();
458
459         final BucketBuilder bucketB = new BucketBuilder();
460
461         bucketB.setAction(actionsList);
462         final Bucket bucket = bucketB.build();
463
464         bucketList.add(bucket); // List of bucket
465
466         final BucketBuilder bucketB1 = new BucketBuilder();
467
468         // Action1
469         actionsList1.add(assembleCopyTtlInBuilder(actionOrder++).build());
470         // Action2:
471         actionsList1.add(assembleSetMplsTtlActionBuilder(actionOrder++).build());
472
473         bucketB1.setAction(actionsList);
474
475         final Bucket bucket1 = bucketB1.build(); // second bucket
476
477         bucketList.add(bucket1);
478
479         bucketsB.setBucket(bucketList);// List of bucket added to the Buckets
480         final Buckets buckets = bucketsB.build();
481
482         addGroupBuilder.setBuckets(buckets);
483
484         VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData((short) 0X4);
485         data.setDatapathId(BigInteger.valueOf(1));
486
487         final GroupModInputBuilder outAddGroupInput = convert(addGroupBuilder.build(), data);
488
489         assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
490         assertEquals(GroupType.OFPGTALL, outAddGroupInput.getType());
491
492         assertEquals(10L, outAddGroupInput.getGroupId().getValue().longValue());
493
494         final List<Action> outActionList = outAddGroupInput.getBucketsList().get(0).getAction();
495         assertEquals(ImmutableList.of(new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203
496                     .actions.grouping.ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
497                             new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action
498                                     .grouping.action.choice.group._case.GroupActionBuilder().setGroupId(5L).build())
499                         .build()).build(),
500                     new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping
501                             .ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
502                                     new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203
503                                             .action.grouping.action.choice.group._case.GroupActionBuilder()
504                                             .setGroupId(6L).build()).build()).build()), outActionList);
505
506         final List<Action> outActionList1 = outAddGroupInput.getBucketsList().get(1).getAction();
507         assertEquals(ImmutableList.of(new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203
508                     .actions.grouping.ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
509                             new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action
510                                     .grouping.action.choice.group._case.GroupActionBuilder().setGroupId(5L).build())
511                         .build()).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(6L).build()).build()).build()), outActionList1);
517     }
518
519     private GroupModInputBuilder convert(final Group group, final VersionDatapathIdConvertorData data) {
520         final Optional<GroupModInputBuilder> outAddGroupInputOptional = convertorManager.convert(group, data);
521         assertTrue("Group convertor not found", outAddGroupInputOptional.isPresent());
522         return outAddGroupInputOptional.get();
523     }
524 }