Remove redundant exception declarations
[openflowplugin.git] / openflowplugin / src / test / java / org / opendaylight / openflowplugin / openflow / md / core / sal / convertor / GroupConvertorTest.java
index 47951e6e0dd0bcafa1e20b568ea474493d07487b..0a5ac4408cfa894f2996a788b09e66453e6f9bea 100644 (file)
@@ -4,20 +4,22 @@
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributor: usha.m.s@ericsson.com
  */
 package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import com.google.common.collect.ImmutableList;
 import java.math.BigInteger;
 import java.util.ArrayList;
 import java.util.List;
-
-import org.junit.Assert;
+import java.util.Optional;
+import org.junit.Before;
 import org.junit.Test;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri;
+import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlInCaseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.GroupActionCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.GroupActionCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.OutputActionCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetMplsTtlActionCaseBuilder;
@@ -32,87 +34,98 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.acti
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.AddGroupInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.AddGroupInputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.BucketId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.Group;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupTypes;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.Buckets;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.BucketsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.Bucket;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.BucketBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.GroupCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetMplsTtlCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.Action;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.GroupModCommand;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.GroupType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GroupModInputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.buckets.grouping.BucketsList;
 
-import com.google.common.collect.ImmutableList;
-
 public class GroupConvertorTest {
+    private ConvertorManager convertorManager;
+
+    @Before
+    public void setUp() {
+        convertorManager = ConvertorManagerFactory.createDefaultManager();
+    }
 
     /**
-     * test of {@link GroupConvertor#toGroupModInput(org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.Group, short, java.math.BigInteger)}
+     * test of {@link GroupConvertor#convert(Group, VersionDatapathIdConvertorData)} }.
      */
     @Test
     public void testGroupModConvertorwithallParameters() {
 
-        AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
+        final AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
 
         addGroupBuilder.setGroupId(new GroupId(10L));
 
         addGroupBuilder.setGroupType(GroupTypes.GroupAll);
-        List<Bucket> bucketList = new ArrayList<Bucket>();
-        List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action> actionsList = new ArrayList<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action>();
-        List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action> actionsList1 = new ArrayList<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action>();
+        final List<Bucket> bucketList = new ArrayList<>();
+        final List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action>
+            actionsList = new ArrayList<>();
+        final List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action>
+            actionsList1 = new ArrayList<>();
 
         int actionOrder = 0;
 
         // Action1
-        GroupActionBuilder groupActionBuilder = new GroupActionBuilder();
+        final GroupActionBuilder groupActionBuilder = new GroupActionBuilder();
         groupActionBuilder.setGroup("005");
-        GroupAction groupIdaction = groupActionBuilder.build();
-        ActionBuilder actionsB = new ActionBuilder();
+        final GroupAction groupIdaction = groupActionBuilder.build();
+        final ActionBuilder actionsB = new ActionBuilder();
         actionsB.setOrder(actionOrder++).setAction(new GroupActionCaseBuilder().setGroupAction(groupIdaction).build());
 
         // Action2:
-        GroupActionBuilder groupActionBuilder1 = new GroupActionBuilder();
+        final GroupActionBuilder groupActionBuilder1 = new GroupActionBuilder();
         groupActionBuilder1.setGroup("006");
-        GroupAction groupIdaction1 = groupActionBuilder.build();
-        ActionBuilder actionsB1 = new ActionBuilder();
-        actionsB1.setOrder(actionOrder++).setAction(new GroupActionCaseBuilder().setGroupAction(groupIdaction1).build());
+        final GroupAction groupIdaction1 = groupActionBuilder.build();
+        final ActionBuilder actionsB1 = new ActionBuilder();
+        actionsB1.setOrder(actionOrder++).setAction(new GroupActionCaseBuilder()
+                .setGroupAction(groupIdaction1).build());
 
         actionsList.add(actionsB.build());
         actionsList.add(actionsB1.build());
 
 
-        BucketsBuilder bucketsB = new BucketsBuilder();
+        final BucketsBuilder bucketsB = new BucketsBuilder();
 
-        BucketBuilder bucketB = new BucketBuilder();
+        final BucketBuilder bucketB = new BucketBuilder();
         bucketB.setWeight(10);
         bucketB.setWatchPort(20L);
         bucketB.setWatchGroup(22L);
 
         bucketB.setAction(actionsList);
-        Bucket bucket = bucketB.build();
+        final Bucket bucket = bucketB.build();
 
         bucketList.add(bucket); // List of bucket
 
-        BucketBuilder bucketB1 = new BucketBuilder();
+        final BucketBuilder bucketB1 = new BucketBuilder();
         bucketB1.setWeight(50);
         bucketB1.setWatchPort(60L);
         bucketB1.setWatchGroup(70L);
 
         // Action1
-        CopyTtlInBuilder copyTtlB = new CopyTtlInBuilder();
-        CopyTtlIn copyTtl = copyTtlB.build();
-        ActionBuilder actionsB2 = new ActionBuilder();
+        final CopyTtlInBuilder copyTtlB = new CopyTtlInBuilder();
+        final CopyTtlIn copyTtl = copyTtlB.build();
+        final ActionBuilder actionsB2 = new ActionBuilder();
         actionsB2.setOrder(actionOrder++).setAction(new CopyTtlInCaseBuilder().setCopyTtlIn(copyTtl).build());
 
         // Action2:
-        SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder();
+        final SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder();
         setMplsTtlActionBuilder.setMplsTtl((short) 0X1);
-        SetMplsTtlAction setMAction = setMplsTtlActionBuilder.build();
-        ActionBuilder actionsB3 = new ActionBuilder();
+        final SetMplsTtlAction setMAction = setMplsTtlActionBuilder.build();
+        final ActionBuilder actionsB3 = new ActionBuilder();
 
-        actionsB3.setOrder(actionOrder++).setAction(new SetMplsTtlActionCaseBuilder().setSetMplsTtlAction(setMAction).build());
+        actionsB3.setOrder(actionOrder++).setAction(new SetMplsTtlActionCaseBuilder()
+                .setSetMplsTtlAction(setMAction).build());
 
 
         actionsList1.add(actionsB2.build());
@@ -120,87 +133,92 @@ public class GroupConvertorTest {
 
         bucketB1.setAction(actionsList);
 
-        Bucket bucket1 = bucketB1.build(); // second bucket
+        final Bucket bucket1 = bucketB1.build(); // second bucket
 
         bucketList.add(bucket1);
 
         bucketsB.setBucket(bucketList);// List of bucket added to the Buckets
-        Buckets buckets = bucketsB.build();
+        final Buckets buckets = bucketsB.build();
 
         addGroupBuilder.setBuckets(buckets);
 
-        GroupModInputBuilder outAddGroupInput = GroupConvertor.toGroupModInput(addGroupBuilder.build(), (short) 0X4, BigInteger.valueOf(1));
-
-        Assert.assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
-        Assert.assertEquals(GroupType.OFPGTALL, outAddGroupInput.getType());
-
-        Assert.assertEquals(10L, (long) outAddGroupInput.getGroupId().getValue());
-        Assert.assertEquals(10, (int) outAddGroupInput.getBucketsList().get(0).getWeight());
-        Assert.assertEquals(20L, (long) outAddGroupInput.getBucketsList().get(0).getWatchPort().getValue());
-        Assert.assertEquals((Long) 22L, outAddGroupInput.getBucketsList().get(0).getWatchGroup());
-
-        List<Action> outActionList = outAddGroupInput.getBucketsList().get(0).getAction();
-        for (int outItem = 0; outItem < outActionList.size(); outItem++) {
-            Action action = outActionList
-                    .get(outItem);
-            if (action.getActionChoice() instanceof GroupActionCase) {
-                Assert.assertEquals((Long) 5L, ((GroupActionCase) action.getActionChoice()).getGroupAction().getGroupId());
-
-            }
-            // TODO:setMplsTTL :OF layer doesnt have get();
-        }
-
-        Assert.assertEquals((Integer) 50, outAddGroupInput.getBucketsList().get(1).getWeight());
-        Assert.assertEquals((long) 60, (long) outAddGroupInput.getBucketsList().get(1).getWatchPort().getValue());
-        Assert.assertEquals((Long) 70L, outAddGroupInput.getBucketsList().get(1).getWatchGroup());
-        List<Action> outActionList1 = outAddGroupInput.getBucketsList().get(1).getAction();
-        for (int outItem = 0; outItem < outActionList1.size(); outItem++) {
-            Action action = outActionList1
-                    .get(outItem);
-            if (action.getActionChoice() instanceof GroupActionCase) {
-
-                Assert.assertEquals((Long) 6L, ((GroupActionCase) action.getActionChoice()).getGroupAction().getGroupId());
-
-
-            }
-            // TODO:setMplsTTL :OF layer doesnt have get();
-        }
-
+        VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData((short) 0X4);
+        data.setDatapathId(BigInteger.valueOf(1));
+
+        final GroupModInputBuilder outAddGroupInput = convert(addGroupBuilder.build(), data);
+
+        assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
+        assertEquals(GroupType.OFPGTALL, outAddGroupInput.getType());
+
+        assertEquals(10L, (long) outAddGroupInput.getGroupId().getValue());
+        assertEquals(10, (int) outAddGroupInput.getBucketsList().get(0).getWeight());
+        assertEquals(20L, (long) outAddGroupInput.getBucketsList().get(0).getWatchPort().getValue());
+        assertEquals((Long) 22L, outAddGroupInput.getBucketsList().get(0).getWatchGroup());
+
+        final List<Action> outActionList = outAddGroupInput.getBucketsList().get(0).getAction();
+        assertEquals(ImmutableList.of(new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action
+                    .rev150203.actions.grouping.ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
+                new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping
+                        .action.choice.group._case.GroupActionBuilder().setGroupId(5L).build()).build()).build(),
+                    new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping
+                    .ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
+                            new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action
+                            .grouping.action.choice.group._case.GroupActionBuilder().setGroupId(5L).build()).build())
+                    .build()), outActionList);
+
+        assertEquals((Integer) 50, outAddGroupInput.getBucketsList().get(1).getWeight());
+        assertEquals((long) 60, (long) outAddGroupInput.getBucketsList().get(1).getWatchPort().getValue());
+        assertEquals((Long) 70L, outAddGroupInput.getBucketsList().get(1).getWatchGroup());
+
+        final List<Action> outActionList1 = outAddGroupInput.getBucketsList().get(1).getAction();
+        assertEquals(ImmutableList.of(new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action
+                    .rev150203.actions.grouping.ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
+                new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping
+                        .action.choice.group._case.GroupActionBuilder().setGroupId(5L).build()).build()).build(),
+                    new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping
+                    .ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
+                            new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action
+                            .grouping.action.choice.group._case.GroupActionBuilder().setGroupId(5L).build()).build())
+                    .build()), outActionList1);
     }
 
     /**
-     * test of {@link GroupConvertor#toGroupModInput(org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.Group, short, java.math.BigInteger)}
+     * test of {@link GroupConvertor#convert(Group, VersionDatapathIdConvertorData)} }.
      */
     @Test
     public void testGroupModConvertorNoBucket() {
-        AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
+        final AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
 
         addGroupBuilder.setGroupId(new GroupId(10L));
 
         addGroupBuilder.setGroupType(GroupTypes.GroupAll);
 
-        GroupModInputBuilder outAddGroupInput = GroupConvertor.toGroupModInput(addGroupBuilder.build(), (short) 0X4, BigInteger.valueOf(1));
+        VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData((short) 0X4);
+        data.setDatapathId(BigInteger.valueOf(1));
 
-        Assert.assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
-        Assert.assertEquals(GroupType.OFPGTALL, outAddGroupInput.getType());
+        final GroupModInputBuilder outAddGroupInput = convert(addGroupBuilder.build(), data);
+        assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
+        assertEquals(GroupType.OFPGTALL, outAddGroupInput.getType());
     }
 
     /**
-     * test of {@link GroupConvertor#toGroupModInput(org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.Group, short, java.math.BigInteger)}
+     * test of {@link GroupConvertor#convert(Group, VersionDatapathIdConvertorData)} }.
      */
     @Test
     public void testGroupModConvertorBucketwithNOWieghtValuesForGroupTypeFastFailure() {
 
         int actionOrder = 0;
 
-        AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
+        final AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
 
         addGroupBuilder.setGroupId(new GroupId(10L));
 
         addGroupBuilder.setGroupType(GroupTypes.GroupFf);
-        List<Bucket> bucketList = new ArrayList<Bucket>();
-        List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action> actionsList = new ArrayList<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action>();
-        List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action> actionsList1 = new ArrayList<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action>();
+        final List<Bucket> bucketList = new ArrayList<>();
+        final List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action>
+            actionsList = new ArrayList<>();
+        final List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action>
+            actionsList1 = new ArrayList<>();
 
         // Action1: 005
         actionsList.add(assembleActionBuilder("005", actionOrder++).build());
@@ -208,17 +226,17 @@ public class GroupConvertorTest {
         actionsList.add(assembleActionBuilder("006", actionOrder++).build());
         // .. and mr.Bond is not coming today
 
-        BucketsBuilder bucketsB = new BucketsBuilder();
+        final BucketsBuilder bucketsB = new BucketsBuilder();
 
-        BucketBuilder bucketB = new BucketBuilder();
+        final BucketBuilder bucketB = new BucketBuilder();
 
         bucketB.setAction(actionsList);
-        Bucket bucket = bucketB.build();
+        final Bucket bucket = bucketB.build();
 
         bucketList.add(bucket); // List of bucket
 
 
-        BucketBuilder bucketB1 = new BucketBuilder();
+        final BucketBuilder bucketB1 = new BucketBuilder();
 
         // Action1
         actionsList1.add(assembleCopyTtlInBuilder(actionOrder++).build());
@@ -227,223 +245,225 @@ public class GroupConvertorTest {
 
         bucketB1.setAction(actionsList1);
 
-        Bucket bucket1 = bucketB1.build(); // second bucket
+        final Bucket bucket1 = bucketB1.build(); // second bucket
 
         bucketList.add(bucket1);
 
         bucketsB.setBucket(bucketList);// List of bucket added to the Buckets
-        Buckets buckets = bucketsB.build();
+        final Buckets buckets = bucketsB.build();
 
         addGroupBuilder.setBuckets(buckets);
 
-        GroupModInputBuilder outAddGroupInput = GroupConvertor.toGroupModInput(addGroupBuilder.build(), (short) 0X4, BigInteger.valueOf(1));
-
-        Assert.assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
-        Assert.assertEquals(GroupType.OFPGTFF, outAddGroupInput.getType());
-
-        Assert.assertEquals(10L, outAddGroupInput.getGroupId().getValue().longValue());
-
-        List<Action> outActionList = outAddGroupInput.getBucketsList().get(0).getAction();
-        for (int outItem = 0; outItem < outActionList.size(); outItem++) {
-            Action action = outActionList
-                    .get(outItem);
-            if (action.getActionChoice() instanceof GroupActionCase) {
-                Assert.assertEquals((Long) 5L, ((GroupActionCase) action.getActionChoice()).getGroupAction().getGroupId());
-            }
-        }
-
-        List<Action> outActionList1 = outAddGroupInput.getBucketsList().get(1).getAction();
-        for (int outItem = 0; outItem < outActionList1.size(); outItem++) {
-            Action action = outActionList1
-                    .get(outItem);
-            if (action.getActionChoice() instanceof GroupActionCase) {
-                Assert.assertEquals((Long) 6L, ((GroupActionCase) action.getActionChoice()).getGroupAction().getGroupId());
-            }
-        }
+        VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData((short) 0X4);
+        data.setDatapathId(BigInteger.valueOf(1));
+
+        final GroupModInputBuilder outAddGroupInput = convert(addGroupBuilder.build(), data);
+
+        assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
+        assertEquals(GroupType.OFPGTFF, outAddGroupInput.getType());
+
+        assertEquals(10L, outAddGroupInput.getGroupId().getValue().longValue());
+
+        final List<Action> outActionList = outAddGroupInput.getBucketsList().get(0).getAction();
+        assertEquals(ImmutableList.of(new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203
+                    .actions.grouping.ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
+                            new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action
+                            .grouping.action.choice.group._case.GroupActionBuilder().setGroupId(5L).build()).build())
+                    .build(),
+                    new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping
+                            .ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
+                                    new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203
+                                    .action.grouping.action.choice.group._case.GroupActionBuilder().setGroupId(6L)
+                                    .build()).build()).build()), outActionList);
+
+        final List<Action> outActionList1 = outAddGroupInput.getBucketsList().get(1).getAction();
+        assertEquals(ImmutableList.of(new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203
+                    .actions.grouping.ActionBuilder().setActionChoice(
+                            new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action
+                            .grouping.action.choice.CopyTtlInCaseBuilder().build()).build(),
+                    new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping
+                            .ActionBuilder().setActionChoice(new SetMplsTtlCaseBuilder().setSetMplsTtlAction(
+                                    new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203
+                                            .action.grouping.action.choice.set.mpls.ttl._case.SetMplsTtlActionBuilder()
+                                            .setMplsTtl((short) 1).build()).build()).build()), outActionList1);
     }
 
     /**
-     * test of {@link GroupConvertor#toGroupModInput(org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.Group, short, java.math.BigInteger)}
+     * test of {@link GroupConvertor#convert(Group, VersionDatapathIdConvertorData)} }.
      */
     @Test
     public void testGroupModConvertSortedBuckets() {
 
-        int actionOrder = 0;
+        final int actionOrder = 0;
 
-        ArrayList<Bucket> bucket = new ArrayList<Bucket>();
+        final ArrayList<Bucket> bucket = new ArrayList<>();
 
         bucket.add(new BucketBuilder()
-                        .setBucketId(new BucketId((long) 4))
-                        .setWatchPort((long)2)
-                        .setWatchGroup((long) 1)
-                        .setAction(ImmutableList.of(new ActionBuilder()
+                .setBucketId(new BucketId((long) 4))
+                .setWatchPort((long)2)
+                .setWatchGroup((long) 1)
+                .setAction(ImmutableList.of(new ActionBuilder()
                         .setOrder(0)
                         .setAction(new OutputActionCaseBuilder()
-                                        .setOutputAction(new OutputActionBuilder()
-                                                                .setOutputNodeConnector(new Uri("openflow:1:2"))
-                                                                .build())
+                                .setOutputAction(new OutputActionBuilder()
+                                        .setOutputNodeConnector(new Uri("openflow:1:2"))
                                         .build())
+                                .build())
                         .build()))
-        .build());
+                .build());
 
         bucket.add(new BucketBuilder()
-                        .setBucketId(new BucketId((long) 3))
-                        .setWatchPort((long)6)
-                        .setWatchGroup((long) 1)
-                        .setAction(ImmutableList.of(new ActionBuilder()
+                .setBucketId(new BucketId((long) 3))
+                .setWatchPort((long)6)
+                .setWatchGroup((long) 1)
+                .setAction(ImmutableList.of(new ActionBuilder()
                         .setOrder(0)
                         .setAction(new OutputActionCaseBuilder()
-                                        .setOutputAction(new OutputActionBuilder()
-                                                                .setOutputNodeConnector(new Uri("openflow:1:6"))
-                                                                .build())
+                                .setOutputAction(new OutputActionBuilder()
+                                        .setOutputNodeConnector(new Uri("openflow:1:6"))
                                         .build())
+                                .build())
                         .build()))
                 .build());
 
         bucket.add(new BucketBuilder()
-                        .setBucketId(new BucketId((long) 2))
-                        .setWatchPort((long)5)
-                        .setWatchGroup((long) 1)
-                        .setAction(ImmutableList.of(new ActionBuilder()
+                .setBucketId(new BucketId((long) 2))
+                .setWatchPort((long)5)
+                .setWatchGroup((long) 1)
+                .setAction(ImmutableList.of(new ActionBuilder()
                         .setOrder(0)
                         .setAction(new OutputActionCaseBuilder()
-                                        .setOutputAction(new OutputActionBuilder()
-                                                                .setOutputNodeConnector(new Uri("openflow:1:5"))
-                                                                .build())
+                                .setOutputAction(new OutputActionBuilder()
+                                        .setOutputNodeConnector(new Uri("openflow:1:5"))
                                         .build())
+                                .build())
                         .build()))
                 .build());
 
         bucket.add(new BucketBuilder()
-                    .setBucketId(new BucketId((long) 1))
-                    .setWatchPort((long)4)
-                    .setWatchGroup((long) 1)
-                    .setAction(ImmutableList.of(new ActionBuilder()
-                    .setOrder(0)
-                    .setAction(new OutputActionCaseBuilder()
-                                    .setOutputAction(new OutputActionBuilder()
-                                                            .setOutputNodeConnector(new Uri("openflow:1:4"))
-                                                            .build())
-                                    .build())
-                    .build()))
-            .build());
+                .setBucketId(new BucketId((long) 1))
+                .setWatchPort((long)4)
+                .setWatchGroup((long) 1)
+                .setAction(ImmutableList.of(new ActionBuilder()
+                        .setOrder(0)
+                        .setAction(new OutputActionCaseBuilder()
+                                .setOutputAction(new OutputActionBuilder()
+                                        .setOutputNodeConnector(new Uri("openflow:1:4"))
+                                        .build())
+                                .build())
+                        .build()))
+                .build());
 
         bucket.add(new BucketBuilder()
-                    .setBucketId(new BucketId((long) 0))
-                    .setWatchPort((long)3)
-                    .setWatchGroup((long) 1)
-                    .setAction(ImmutableList.of(new ActionBuilder()
-                    .setOrder(0)
-                    .setAction(new OutputActionCaseBuilder()
-                                    .setOutputAction(new OutputActionBuilder()
-                                                            .setOutputNodeConnector(new Uri("openflow:1:3"))
-                                                            .build())
-                                    .build())
-                    .build()))
-                    .build());
+                .setBucketId(new BucketId((long) 0))
+                .setWatchPort((long)3)
+                .setWatchGroup((long) 1)
+                .setAction(ImmutableList.of(new ActionBuilder()
+                        .setOrder(0)
+                        .setAction(new OutputActionCaseBuilder()
+                                .setOutputAction(new OutputActionBuilder()
+                                        .setOutputNodeConnector(new Uri("openflow:1:3"))
+                                        .build())
+                                .build())
+                        .build()))
+                .build());
 
 
-        AddGroupInput input = new AddGroupInputBuilder()
-                                    .setGroupId(new GroupId((long) 1))
-                                    .setGroupName("Foo")
-                                    .setGroupType(GroupTypes.GroupFf)
-                                    .setBuckets(new BucketsBuilder()
-                                                       .setBucket(bucket)
-                                                       .build())
-                                    .build();
+        final AddGroupInput input = new AddGroupInputBuilder()
+                .setGroupId(new GroupId((long) 1))
+                .setGroupName("Foo")
+                .setGroupType(GroupTypes.GroupFf)
+                .setBuckets(new BucketsBuilder()
+                        .setBucket(bucket)
+                        .build())
+                .build();
 
-        GroupModInputBuilder outAddGroupInput = GroupConvertor.toGroupModInput(input, (short) 0X4, BigInteger.valueOf(1));
+        VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData((short) 0X4);
+        data.setDatapathId(BigInteger.valueOf(1));
 
-        List<BucketsList> bucketList = outAddGroupInput.getBucketsList();
-        Assert.assertEquals( Long.valueOf(1), bucketList.get(0).getWatchGroup());
-        Assert.assertEquals( Long.valueOf(3), bucketList.get(0).getWatchPort().getValue());
+        final GroupModInputBuilder outAddGroupInput = convert(input, data);
 
-        Assert.assertEquals( Long.valueOf(1), bucketList.get(1).getWatchGroup());
-        Assert.assertEquals( Long.valueOf(4), bucketList.get(1).getWatchPort().getValue());
+        final List<BucketsList> bucketList = outAddGroupInput.getBucketsList();
+        assertEquals(Long.valueOf(1), bucketList.get(0).getWatchGroup());
+        assertEquals(Long.valueOf(3), bucketList.get(0).getWatchPort().getValue());
 
-        Assert.assertEquals( Long.valueOf(1), bucketList.get(2).getWatchGroup());
-        Assert.assertEquals( Long.valueOf(5), bucketList.get(2).getWatchPort().getValue());
+        assertEquals(Long.valueOf(1), bucketList.get(1).getWatchGroup());
+        assertEquals(Long.valueOf(4), bucketList.get(1).getWatchPort().getValue());
 
-        Assert.assertEquals( Long.valueOf(1), bucketList.get(3).getWatchGroup());
-        Assert.assertEquals( Long.valueOf(6), bucketList.get(3).getWatchPort().getValue());
+        assertEquals(Long.valueOf(1), bucketList.get(2).getWatchGroup());
+        assertEquals(Long.valueOf(5), bucketList.get(2).getWatchPort().getValue());
 
-        Assert.assertEquals( Long.valueOf(1), bucketList.get(4).getWatchGroup());
-        Assert.assertEquals( Long.valueOf(2), bucketList.get(4).getWatchPort().getValue());
+        assertEquals(Long.valueOf(1), bucketList.get(3).getWatchGroup());
+        assertEquals(Long.valueOf(6), bucketList.get(3).getWatchPort().getValue());
 
+        assertEquals(Long.valueOf(1), bucketList.get(4).getWatchGroup());
+        assertEquals(Long.valueOf(2), bucketList.get(4).getWatchPort().getValue());
 
     }
 
-    /**
-     * @return
-     */
-    private static ActionBuilder assembleSetMplsTtlActionBuilder(int actionOrder) {
-        SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder();
+    private static ActionBuilder assembleSetMplsTtlActionBuilder(final int actionOrder) {
+        final SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder();
         setMplsTtlActionBuilder.setMplsTtl((short) 0X1);
-        SetMplsTtlActionCaseBuilder setMplsTtlActionCaseBuilder = new SetMplsTtlActionCaseBuilder();
+        final SetMplsTtlActionCaseBuilder setMplsTtlActionCaseBuilder = new SetMplsTtlActionCaseBuilder();
         setMplsTtlActionCaseBuilder.setSetMplsTtlAction(setMplsTtlActionBuilder.build());
-        ActionBuilder actionsB3 = new ActionBuilder();
+        final ActionBuilder actionsB3 = new ActionBuilder();
         actionsB3.setOrder(actionOrder).setAction(setMplsTtlActionCaseBuilder.build());
         return actionsB3;
     }
 
-    /**
-     * @return
-     */
-    private static ActionBuilder assembleCopyTtlInBuilder(int actionOrder) {
-        CopyTtlInBuilder copyTtlB = new CopyTtlInBuilder();
-        CopyTtlInCaseBuilder copyTtlInCaseBuilder = new CopyTtlInCaseBuilder();
+    private static ActionBuilder assembleCopyTtlInBuilder(final int actionOrder) {
+        final CopyTtlInBuilder copyTtlB = new CopyTtlInBuilder();
+        final CopyTtlInCaseBuilder copyTtlInCaseBuilder = new CopyTtlInCaseBuilder();
         copyTtlInCaseBuilder.setCopyTtlIn(copyTtlB.build());
-        ActionBuilder actionsB2 = new ActionBuilder();
+        final ActionBuilder actionsB2 = new ActionBuilder();
         actionsB2.setOrder(actionOrder).setAction(copyTtlInCaseBuilder.build());
         return actionsB2;
     }
 
-    /**
-     * @param groupName name of group
-     * @return
-     */
-    private static ActionBuilder assembleActionBuilder(String groupName, int actionOrder) {
-        GroupActionBuilder groupActionBuilder = new GroupActionBuilder();
+    private static ActionBuilder assembleActionBuilder(final String groupName, final int actionOrder) {
+        final GroupActionBuilder groupActionBuilder = new GroupActionBuilder();
         groupActionBuilder.setGroup(groupName);
-        GroupActionCaseBuilder groupActionCaseBuilder = new GroupActionCaseBuilder();
+        final GroupActionCaseBuilder groupActionCaseBuilder = new GroupActionCaseBuilder();
         groupActionCaseBuilder.setGroupAction(groupActionBuilder.build());
-        ActionBuilder actionsBld = new ActionBuilder();
+        final ActionBuilder actionsBld = new ActionBuilder();
         actionsBld.setOrder(actionOrder).setAction(groupActionCaseBuilder.build());
         return actionsBld;
     }
 
     /**
-     * test of {@link GroupConvertor#toGroupModInput(org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.Group, short, java.math.BigInteger)} )}
+     * test of {@link GroupConvertor#convert(Group, VersionDatapathIdConvertorData)} }.
      */
     @Test
     public void testGroupModConvertorBucketwithNOWieghtValuesForGroupTypeAll() {
 
         int actionOrder = 0;
 
-        AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
+        final AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
 
         addGroupBuilder.setGroupId(new GroupId(10L));
 
         addGroupBuilder.setGroupType(GroupTypes.GroupAll);
-        List<Bucket> bucketList = new ArrayList<Bucket>();
-        List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action> actionsList = new ArrayList<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action>();
-        List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action> actionsList1 = new ArrayList<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action>();
+        final List<Bucket> bucketList = new ArrayList<>();
+        final List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action>
+            actionsList = new ArrayList<>();
+        final List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action>
+            actionsList1 = new ArrayList<>();
 
         // Action1
         actionsList.add(assembleActionBuilder("005", actionOrder++).build());
         // Action2:
         actionsList.add(assembleActionBuilder("006", actionOrder++).build());
 
-        BucketsBuilder bucketsB = new BucketsBuilder();
+        final BucketsBuilder bucketsB = new BucketsBuilder();
 
-        BucketBuilder bucketB = new BucketBuilder();
+        final BucketBuilder bucketB = new BucketBuilder();
 
         bucketB.setAction(actionsList);
-        Bucket bucket = bucketB.build();
+        final Bucket bucket = bucketB.build();
 
         bucketList.add(bucket); // List of bucket
 
-        BucketBuilder bucketB1 = new BucketBuilder();
+        final BucketBuilder bucketB1 = new BucketBuilder();
 
         // Action1
         actionsList1.add(assembleCopyTtlInBuilder(actionOrder++).build());
@@ -452,44 +472,53 @@ public class GroupConvertorTest {
 
         bucketB1.setAction(actionsList);
 
-        Bucket bucket1 = bucketB1.build(); // second bucket
+        final Bucket bucket1 = bucketB1.build(); // second bucket
 
         bucketList.add(bucket1);
 
         bucketsB.setBucket(bucketList);// List of bucket added to the Buckets
-        Buckets buckets = bucketsB.build();
+        final Buckets buckets = bucketsB.build();
 
         addGroupBuilder.setBuckets(buckets);
 
-        GroupModInputBuilder outAddGroupInput = GroupConvertor.toGroupModInput(addGroupBuilder.build(), (short) 0X4, BigInteger.valueOf(1));
-
-        Assert.assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
-        Assert.assertEquals(GroupType.OFPGTALL, outAddGroupInput.getType());
-
-        Assert.assertEquals(10L, outAddGroupInput.getGroupId().getValue().longValue());
-
-        List<Action> outActionList = outAddGroupInput.getBucketsList().get(0).getAction();
-        for (int outItem = 0; outItem < outActionList.size(); outItem++) {
-            Action action = outActionList
-                    .get(outItem);
-            if (action.getActionChoice() instanceof GroupActionCase) {
-                Assert.assertEquals((Long) 5L, ((GroupActionCase) action.getActionChoice()).getGroupAction().getGroupId());
-
-            }
-
-        }
-
-        List<Action> outActionList1 = outAddGroupInput.getBucketsList().get(1).getAction();
-        for (int outItem = 0; outItem < outActionList1.size(); outItem++) {
-            Action action = outActionList1
-                    .get(outItem);
-            if (action.getActionChoice() instanceof GroupActionCase) {
-
-                Assert.assertEquals((Long) 6L, ((GroupActionCase) action.getActionChoice()).getGroupAction().getGroupId());
-
-            }
-
-        }
+        VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData((short) 0X4);
+        data.setDatapathId(BigInteger.valueOf(1));
+
+        final GroupModInputBuilder outAddGroupInput = convert(addGroupBuilder.build(), data);
+
+        assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
+        assertEquals(GroupType.OFPGTALL, outAddGroupInput.getType());
+
+        assertEquals(10L, outAddGroupInput.getGroupId().getValue().longValue());
+
+        final List<Action> outActionList = outAddGroupInput.getBucketsList().get(0).getAction();
+        assertEquals(ImmutableList.of(new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203
+                    .actions.grouping.ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
+                            new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action
+                                    .grouping.action.choice.group._case.GroupActionBuilder().setGroupId(5L).build())
+                        .build()).build(),
+                    new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping
+                            .ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
+                                    new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203
+                                            .action.grouping.action.choice.group._case.GroupActionBuilder()
+                                            .setGroupId(6L).build()).build()).build()), outActionList);
+
+        final List<Action> outActionList1 = outAddGroupInput.getBucketsList().get(1).getAction();
+        assertEquals(ImmutableList.of(new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203
+                    .actions.grouping.ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
+                            new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action
+                                    .grouping.action.choice.group._case.GroupActionBuilder().setGroupId(5L).build())
+                        .build()).build(),
+                    new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping
+                            .ActionBuilder().setActionChoice(new GroupCaseBuilder().setGroupAction(
+                                    new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203
+                                            .action.grouping.action.choice.group._case.GroupActionBuilder()
+                                            .setGroupId(6L).build()).build()).build()), outActionList1);
+    }
 
+    private GroupModInputBuilder convert(final Group group, final VersionDatapathIdConvertorData data) {
+        final Optional<GroupModInputBuilder> outAddGroupInputOptional = convertorManager.convert(group, data);
+        assertTrue("Group convertor not found", outAddGroupInputOptional.isPresent());
+        return outAddGroupInputOptional.get();
     }
 }