Update MRI projects for Aluminium
[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.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;
53
54 public class GroupConvertorTest {
55     private ConvertorManager convertorManager;
56
57     @Before
58     public void setUp() {
59         convertorManager = ConvertorManagerFactory.createDefaultManager();
60     }
61
62     /**
63      * test of {@link GroupConvertor#convert(Group, VersionDatapathIdConvertorData)} }.
64      */
65     @Test
66     public void testGroupModConvertorwithallParameters() {
67
68         final AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
69
70         addGroupBuilder.setGroupId(new GroupId(10L));
71
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<>();
78
79         int actionOrder = 0;
80
81         // Action1
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());
87
88         // Action2:
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());
95
96         actionsList.add(actionsB.build());
97         actionsList.add(actionsB1.build());
98
99
100         final BucketsBuilder bucketsB = new BucketsBuilder();
101
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)));
107
108         bucketB.setAction(actionsList);
109         final Bucket bucket = bucketB.build();
110
111         bucketList.add(bucket); // List of bucket
112
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)));
118
119         // Action1
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());
124
125         // Action2:
126         final SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder();
127         setMplsTtlActionBuilder.setMplsTtl((short) 0X1);
128         final SetMplsTtlAction setMAction = setMplsTtlActionBuilder.build();
129         final ActionBuilder actionsB3 = new ActionBuilder();
130
131         actionsB3.setOrder(actionOrder++).setAction(new SetMplsTtlActionCaseBuilder()
132                 .setSetMplsTtlAction(setMAction).build());
133
134
135         actionsList1.add(actionsB2.build());
136         actionsList1.add(actionsB3.build());
137
138         bucketB1.setAction(actionsList);
139
140         final Bucket bucket1 = bucketB1.build(); // second bucket
141
142         bucketList.add(bucket1);
143
144         bucketsB.setBucket(bucketList);// List of bucket added to the Buckets
145         final Buckets buckets = bucketsB.build();
146
147         addGroupBuilder.setBuckets(buckets);
148
149         VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData((short) 0X4);
150         data.setDatapathId(Uint64.ONE);
151
152         final GroupModInputBuilder outAddGroupInput = convert(addGroupBuilder.build(), data);
153
154         assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
155         assertEquals(GroupType.OFPGTALL, outAddGroupInput.getType());
156
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());
161
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);
172
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());
176
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);
187     }
188
189     /**
190      * test of {@link GroupConvertor#convert(Group, VersionDatapathIdConvertorData)} }.
191      */
192     @Test
193     public void testGroupModConvertorNoBucket() {
194         final AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
195
196         addGroupBuilder.setGroupId(new GroupId(10L));
197
198         addGroupBuilder.setGroupType(GroupTypes.GroupAll);
199
200         VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData((short) 0X4);
201         data.setDatapathId(Uint64.ONE);
202
203         final GroupModInputBuilder outAddGroupInput = convert(addGroupBuilder.build(), data);
204         assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
205         assertEquals(GroupType.OFPGTALL, outAddGroupInput.getType());
206     }
207
208     /**
209      * test of {@link GroupConvertor#convert(Group, VersionDatapathIdConvertorData)} }.
210      */
211     @Test
212     public void testGroupModConvertorBucketwithNOWieghtValuesForGroupTypeFastFailure() {
213
214         int actionOrder = 0;
215
216         final AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
217
218         addGroupBuilder.setGroupId(new GroupId(10L));
219
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<>();
226
227         // Action1: 005
228         actionsList.add(assembleActionBuilder("005", actionOrder++).build());
229         // Action2: 006
230         actionsList.add(assembleActionBuilder("006", actionOrder++).build());
231         // .. and mr.Bond is not coming today
232
233         final BucketsBuilder bucketsB = new BucketsBuilder();
234
235         final BucketBuilder bucketB = new BucketBuilder();
236
237         bucketB.setAction(actionsList).withKey(new BucketKey(new BucketId(Uint32.ZERO)));
238         final Bucket bucket = bucketB.build();
239
240         bucketList.add(bucket); // List of bucket
241
242
243         final BucketBuilder bucketB1 = new BucketBuilder();
244
245         // Action1
246         actionsList1.add(assembleCopyTtlInBuilder(actionOrder++).build());
247         // Action2:
248         actionsList1.add(assembleSetMplsTtlActionBuilder(actionOrder++).build());
249
250         bucketB1.setAction(actionsList1).withKey(new BucketKey(new BucketId(Uint32.ONE)));
251
252         final Bucket bucket1 = bucketB1.build(); // second bucket
253
254         bucketList.add(bucket1);
255
256         bucketsB.setBucket(bucketList);// List of bucket added to the Buckets
257         final Buckets buckets = bucketsB.build();
258
259         addGroupBuilder.setBuckets(buckets);
260
261         VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData((short) 0X4);
262         data.setDatapathId(Uint64.ONE);
263
264         final GroupModInputBuilder outAddGroupInput = convert(addGroupBuilder.build(), data);
265
266         assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
267         assertEquals(GroupType.OFPGTFF, outAddGroupInput.getType());
268
269         assertEquals(10L, outAddGroupInput.getGroupId().getValue().longValue());
270
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())
276                     .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);
282
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);
293     }
294
295     /**
296      * test of {@link GroupConvertor#convert(Group, VersionDatapathIdConvertorData)} }.
297      */
298     @Test
299     public void testGroupModConvertSortedBuckets() {
300
301         final int actionOrder = 0;
302
303         final ArrayList<Bucket> bucket = new ArrayList<>();
304
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()
310                         .setOrder(0)
311                         .setAction(new OutputActionCaseBuilder()
312                                 .setOutputAction(new OutputActionBuilder()
313                                         .setOutputNodeConnector(new Uri("openflow:1:2"))
314                                         .build())
315                                 .build())
316                         .build()))
317                 .build());
318
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()
324                         .setOrder(0)
325                         .setAction(new OutputActionCaseBuilder()
326                                 .setOutputAction(new OutputActionBuilder()
327                                         .setOutputNodeConnector(new Uri("openflow:1:6"))
328                                         .build())
329                                 .build())
330                         .build()))
331                 .build());
332
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()
338                         .setOrder(0)
339                         .setAction(new OutputActionCaseBuilder()
340                                 .setOutputAction(new OutputActionBuilder()
341                                         .setOutputNodeConnector(new Uri("openflow:1:5"))
342                                         .build())
343                                 .build())
344                         .build()))
345                 .build());
346
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()
352                         .setOrder(0)
353                         .setAction(new OutputActionCaseBuilder()
354                                 .setOutputAction(new OutputActionBuilder()
355                                         .setOutputNodeConnector(new Uri("openflow:1:4"))
356                                         .build())
357                                 .build())
358                         .build()))
359                 .build());
360
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()
366                         .setOrder(0)
367                         .setAction(new OutputActionCaseBuilder()
368                                 .setOutputAction(new OutputActionBuilder()
369                                         .setOutputNodeConnector(new Uri("openflow:1:3"))
370                                         .build())
371                                 .build())
372                         .build()))
373                 .build());
374
375
376         final AddGroupInput input = new AddGroupInputBuilder()
377                 .setGroupId(new GroupId((long) 1))
378                 .setGroupName("Foo")
379                 .setGroupType(GroupTypes.GroupFf)
380                 .setBuckets(new BucketsBuilder()
381                         .setBucket(bucket)
382                         .build())
383                 .build();
384
385         VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData((short) 0X4);
386         data.setDatapathId(Uint64.ONE);
387
388         final GroupModInputBuilder outAddGroupInput = convert(input, data);
389
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());
393
394         assertEquals(Uint32.ONE, bucketList.get(1).getWatchGroup());
395         assertEquals(Uint32.valueOf(4), bucketList.get(1).getWatchPort().getValue());
396
397         assertEquals(Uint32.ONE, bucketList.get(2).getWatchGroup());
398         assertEquals(Uint32.valueOf(5), bucketList.get(2).getWatchPort().getValue());
399
400         assertEquals(Uint32.ONE, bucketList.get(3).getWatchGroup());
401         assertEquals(Uint32.valueOf(6), bucketList.get(3).getWatchPort().getValue());
402
403         assertEquals(Uint32.ONE, bucketList.get(4).getWatchGroup());
404         assertEquals(Uint32.valueOf(2), bucketList.get(4).getWatchPort().getValue());
405
406     }
407
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());
415         return actionsB3;
416     }
417
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());
424         return actionsB2;
425     }
426
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());
434         return actionsBld;
435     }
436
437     /**
438      * test of {@link GroupConvertor#convert(Group, VersionDatapathIdConvertorData)} }.
439      */
440     @Test
441     public void testGroupModConvertorBucketwithNOWieghtValuesForGroupTypeAll() {
442
443         int actionOrder = 0;
444
445         final AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
446
447         addGroupBuilder.setGroupId(new GroupId(10L));
448
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<>();
455
456         // Action1
457         actionsList.add(assembleActionBuilder("005", actionOrder++).build());
458         // Action2:
459         actionsList.add(assembleActionBuilder("006", actionOrder++).build());
460
461         final BucketsBuilder bucketsB = new BucketsBuilder();
462
463         final BucketBuilder bucketB = new BucketBuilder();
464
465         bucketB.setAction(actionsList).withKey(new BucketKey(new BucketId(Uint32.ZERO)));
466         final Bucket bucket = bucketB.build();
467
468         bucketList.add(bucket); // List of bucket
469
470         final BucketBuilder bucketB1 = new BucketBuilder();
471
472         // Action1
473         actionsList1.add(assembleCopyTtlInBuilder(actionOrder++).build());
474         // Action2:
475         actionsList1.add(assembleSetMplsTtlActionBuilder(actionOrder++).build());
476
477         bucketB1.setAction(actionsList).withKey(new BucketKey(new BucketId(Uint32.ONE)));
478
479         final Bucket bucket1 = bucketB1.build(); // second bucket
480
481         bucketList.add(bucket1);
482
483         bucketsB.setBucket(bucketList);// List of bucket added to the Buckets
484         final Buckets buckets = bucketsB.build();
485
486         addGroupBuilder.setBuckets(buckets);
487
488         VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData((short) 0X4);
489         data.setDatapathId(Uint64.ONE);
490
491         final GroupModInputBuilder outAddGroupInput = convert(addGroupBuilder.build(), data);
492
493         assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
494         assertEquals(GroupType.OFPGTALL, outAddGroupInput.getType());
495
496         assertEquals(10L, outAddGroupInput.getGroupId().getValue().longValue());
497
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())
503                         .build()).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);
509
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())
515                         .build()).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);
521     }
522
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();
527     }
528 }