-/**
+/*
* Copyright (c) 2014 Ericsson India Global Services Pvt Ltd. and others. All rights reserved.
*
* 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 java.math.BigInteger;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import com.google.common.collect.ImmutableList;
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.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.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;
import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.in._case.CopyTtlIn;
import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.in._case.CopyTtlInBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.group.action._case.GroupAction;
import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.group.action._case.GroupActionBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.output.action._case.OutputActionBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.mpls.ttl.action._case.SetMplsTtlAction;
import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.mpls.ttl.action._case.SetMplsTtlActionBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
+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.augments.rev131002.GroupIdAction;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.ActionsList;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.BucketKey;
+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.GroupModInput;
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 org.opendaylight.yangtools.yang.common.Uint32;
+import org.opendaylight.yangtools.yang.common.Uint64;
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)}
+ * 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();
- actionsB.setAction(new GroupActionCaseBuilder().setGroupAction(groupIdaction).build());
+ 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.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.withKey(new BucketKey(new BucketId(Uint32.ZERO)));
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);
+ bucketB1.withKey(new BucketKey(new BucketId(Uint32.ONE)));
// Action1
- CopyTtlInBuilder copyTtlB = new CopyTtlInBuilder();
- CopyTtlIn copyTtl = copyTtlB.build();
- ActionBuilder actionsB2 = new ActionBuilder();
- actionsB2.setAction(new CopyTtlInCaseBuilder().setCopyTtlIn(copyTtl).build());
+ 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();
- setMplsTtlActionBuilder.setMplsTtl((short)0X1);
- SetMplsTtlAction setMAction = setMplsTtlActionBuilder.build();
- ActionBuilder actionsB3 = new ActionBuilder();
+ final SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder();
+ setMplsTtlActionBuilder.setMplsTtl((short) 0X1);
+ final SetMplsTtlAction setMAction = setMplsTtlActionBuilder.build();
+ final ActionBuilder actionsB3 = new ActionBuilder();
- actionsB3.setAction(new SetMplsTtlActionCaseBuilder().setSetMplsTtlAction(setMAction).build());
+ actionsB3.setOrder(actionOrder++).setAction(new SetMplsTtlActionCaseBuilder()
+ .setSetMplsTtlAction(setMAction).build());
actionsList1.add(actionsB2.build());
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<ActionsList> outActionList = outAddGroupInput.getBucketsList().get(0).getActionsList();
- for (int outItem = 0; outItem < outActionList.size(); outItem++) {
- org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.actions.list.Action action = outActionList
- .get(outItem).getAction();
- if (action instanceof GroupIdAction) {
- Assert.assertEquals((Long) 5L, ((GroupIdAction) action).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<ActionsList> outActionList1 = outAddGroupInput.getBucketsList().get(1).getActionsList();
- for (int outItem = 0; outItem < outActionList1.size(); outItem++) {
- org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.actions.list.Action action = outActionList1
- .get(outItem).getAction();
- if (action instanceof GroupIdAction) {
-
- Assert.assertEquals((Long) 6L, ((GroupIdAction) action).getGroupId());
-
-
- }
- // TODO:setMplsTTL :OF layer doesnt have get();
- }
-
+ VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData((short) 0X4);
+ data.setDatapathId(Uint64.ONE);
+
+ final GroupModInputBuilder outAddGroupInput = convert(addGroupBuilder.build(), data);
+
+ assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
+ assertEquals(GroupType.OFPGTALL, outAddGroupInput.getType());
+
+ assertEquals(10L, outAddGroupInput.getGroupId().getValue().toJava());
+ assertEquals(10, outAddGroupInput.getBucketsList().get(0).getWeight().toJava());
+ assertEquals(20L, outAddGroupInput.getBucketsList().get(0).getWatchPort().getValue().toJava());
+ assertEquals(22L, outAddGroupInput.getBucketsList().get(0).getWatchGroup().toJava());
+
+ 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(50, outAddGroupInput.getBucketsList().get(1).getWeight().toJava());
+ assertEquals(60, outAddGroupInput.getBucketsList().get(1).getWatchPort().getValue().toJava());
+ assertEquals(70L, outAddGroupInput.getBucketsList().get(1).getWatchGroup().toJava());
+
+ 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)}
+ * 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(Uint64.ONE);
- 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)}
+ * test of {@link GroupConvertor#convert(Group, VersionDatapathIdConvertorData)} }.
*/
@Test
public void testGroupModConvertorBucketwithNOWieghtValuesForGroupTypeFastFailure() {
- AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
+ int actionOrder = 0;
+
+ 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").build());
+ actionsList.add(assembleActionBuilder("005", actionOrder++).build());
// Action2: 006
- actionsList.add(assembleActionBuilder("006").build());
+ 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();
+ bucketB.setAction(actionsList).withKey(new BucketKey(new BucketId(Uint32.ZERO)));
+ final Bucket bucket = bucketB.build();
bucketList.add(bucket); // List of bucket
-
-
- BucketBuilder bucketB1 = new BucketBuilder();
+
+ final BucketBuilder bucketB1 = new BucketBuilder();
// Action1
- actionsList1.add(assembleCopyTtlInBuilder().build());
+ actionsList1.add(assembleCopyTtlInBuilder(actionOrder++).build());
// Action2:
- actionsList1.add(assembleSetMplsTtlActionBuilder().build());
+ actionsList1.add(assembleSetMplsTtlActionBuilder(actionOrder++).build());
- bucketB1.setAction(actionsList1);
+ bucketB1.setAction(actionsList1).withKey(new BucketKey(new BucketId(Uint32.ONE)));
- 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<ActionsList> outActionList = outAddGroupInput.getBucketsList().get(0).getActionsList();
- for (int outItem = 0; outItem < outActionList.size(); outItem++) {
- org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.actions.list.Action action = outActionList
- .get(outItem).getAction();
- if (action instanceof GroupIdAction) {
- Assert.assertEquals((Long) 5L, ((GroupIdAction) action).getGroupId());
- }
- }
-
- List<ActionsList> outActionList1 = outAddGroupInput.getBucketsList().get(1).getActionsList();
- for (int outItem = 0; outItem < outActionList1.size(); outItem++) {
- org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.actions.list.Action action = outActionList1
- .get(outItem).getAction();
- if (action instanceof GroupIdAction) {
- Assert.assertEquals((Long) 6L, ((GroupIdAction) action).getGroupId());
- }
- }
+ VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData((short) 0X4);
+ data.setDatapathId(Uint64.ONE);
+
+ 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);
}
/**
- * @return
+ * test of {@link GroupConvertor#convert(Group, VersionDatapathIdConvertorData)} }.
*/
- private static ActionBuilder assembleSetMplsTtlActionBuilder() {
- SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder();
+ @Test
+ public void testGroupModConvertSortedBuckets() {
+
+ final int actionOrder = 0;
+
+ 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()
+ .setOrder(0)
+ .setAction(new OutputActionCaseBuilder()
+ .setOutputAction(new OutputActionBuilder()
+ .setOutputNodeConnector(new Uri("openflow:1:2"))
+ .build())
+ .build())
+ .build()))
+ .build());
+
+ bucket.add(new BucketBuilder()
+ .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())
+ .build())
+ .build()))
+ .build());
+
+ bucket.add(new BucketBuilder()
+ .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())
+ .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());
+
+ 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());
+
+
+ final AddGroupInput input = new AddGroupInputBuilder()
+ .setGroupId(new GroupId((long) 1))
+ .setGroupName("Foo")
+ .setGroupType(GroupTypes.GroupFf)
+ .setBuckets(new BucketsBuilder()
+ .setBucket(bucket)
+ .build())
+ .build();
+
+ VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData((short) 0X4);
+ data.setDatapathId(Uint64.ONE);
+
+ final GroupModInputBuilder outAddGroupInput = convert(input, data);
+
+ final List<BucketsList> bucketList = outAddGroupInput.getBucketsList();
+ assertEquals(Uint32.ONE, bucketList.get(0).getWatchGroup());
+ assertEquals(Uint32.valueOf(3), bucketList.get(0).getWatchPort().getValue());
+
+ assertEquals(Uint32.ONE, bucketList.get(1).getWatchGroup());
+ assertEquals(Uint32.valueOf(4), bucketList.get(1).getWatchPort().getValue());
+
+ assertEquals(Uint32.ONE, bucketList.get(2).getWatchGroup());
+ assertEquals(Uint32.valueOf(5), bucketList.get(2).getWatchPort().getValue());
+
+ assertEquals(Uint32.ONE, bucketList.get(3).getWatchGroup());
+ assertEquals(Uint32.valueOf(6), bucketList.get(3).getWatchPort().getValue());
+
+ assertEquals(Uint32.ONE, bucketList.get(4).getWatchGroup());
+ assertEquals(Uint32.valueOf(2), bucketList.get(4).getWatchPort().getValue());
+
+ }
+
+ 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();
- actionsB3.setAction(setMplsTtlActionCaseBuilder.build());
+ final ActionBuilder actionsB3 = new ActionBuilder();
+ actionsB3.setOrder(actionOrder).setAction(setMplsTtlActionCaseBuilder.build());
return actionsB3;
}
- /**
- * @return
- */
- private static ActionBuilder assembleCopyTtlInBuilder() {
- 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();
- actionsB2.setAction(copyTtlInCaseBuilder.build());
+ 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) {
- 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();
- actionsBld.setAction(groupActionCaseBuilder.build());
+ 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)}
+ * test of {@link GroupConvertor#convert(Group, VersionDatapathIdConvertorData)} }.
*/
@Test
public void testGroupModConvertorBucketwithNOWieghtValuesForGroupTypeAll() {
- AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
+ int actionOrder = 0;
+
+ 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").build());
+ actionsList.add(assembleActionBuilder("005", actionOrder++).build());
// Action2:
- actionsList.add(assembleActionBuilder("006").build());
+ 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();
+ bucketB.setAction(actionsList).withKey(new BucketKey(new BucketId(Uint32.ZERO)));
+ final Bucket bucket = bucketB.build();
bucketList.add(bucket); // List of bucket
- BucketBuilder bucketB1 = new BucketBuilder();
+ final BucketBuilder bucketB1 = new BucketBuilder();
// Action1
- actionsList1.add(assembleCopyTtlInBuilder().build());
+ actionsList1.add(assembleCopyTtlInBuilder(actionOrder++).build());
// Action2:
- actionsList1.add(assembleSetMplsTtlActionBuilder().build());
+ actionsList1.add(assembleSetMplsTtlActionBuilder(actionOrder++).build());
- bucketB1.setAction(actionsList);
+ bucketB1.setAction(actionsList).withKey(new BucketKey(new BucketId(Uint32.ONE)));
- 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<ActionsList> outActionList = outAddGroupInput.getBucketsList().get(0).getActionsList();
- for (int outItem = 0; outItem < outActionList.size(); outItem++) {
- org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.actions.list.Action action = outActionList
- .get(outItem).getAction();
- if (action instanceof GroupIdAction) {
- Assert.assertEquals((Long) 5L, ((GroupIdAction) action).getGroupId());
-
- }
-
- }
-
- List<ActionsList> outActionList1 = outAddGroupInput.getBucketsList().get(1).getActionsList();
- for (int outItem = 0; outItem < outActionList1.size(); outItem++) {
- org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.actions.list.Action action = outActionList1
- .get(outItem).getAction();
- if (action instanceof GroupIdAction) {
-
- Assert.assertEquals((Long) 6L, ((GroupIdAction) action).getGroupId());
-
- }
-
- }
+ VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData((short) 0X4);
+ data.setDatapathId(Uint64.ONE);
+
+ 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();
}
}