2 * Copyright (c) 2014 Ericsson India Global Services Pvt Ltd. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 * Contributor: usha.m.s@ericsson.com
10 package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor;
12 import java.math.BigInteger;
13 import java.util.ArrayList;
14 import java.util.List;
16 import org.junit.Assert;
17 import org.junit.Test;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlInCaseBuilder;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.GroupActionCaseBuilder;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetMplsTtlActionCaseBuilder;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.in._case.CopyTtlIn;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.in._case.CopyTtlInBuilder;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.group.action._case.GroupAction;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.group.action._case.GroupActionBuilder;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.mpls.ttl.action._case.SetMplsTtlAction;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.mpls.ttl.action._case.SetMplsTtlActionBuilder;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.AddGroupInputBuilder;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupId;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupTypes;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.Buckets;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.BucketsBuilder;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.Bucket;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.BucketBuilder;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.GroupIdAction;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.Action;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.GroupModCommand;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.GroupType;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GroupModInputBuilder;
41 public class GroupConvertorTest {
44 * test of {@link GroupConvertor#toGroupModInput(org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.Group, short)}
47 public void testGroupModConvertorwithallParameters() {
49 AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
51 addGroupBuilder.setGroupId(new GroupId(10L));
53 addGroupBuilder.setGroupType(GroupTypes.GroupAll);
54 List<Bucket> bucketList = new ArrayList<Bucket>();
55 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>();
56 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>();
59 GroupActionBuilder groupActionBuilder = new GroupActionBuilder();
60 groupActionBuilder.setGroup("005");
61 GroupAction groupIdaction = groupActionBuilder.build();
62 ActionBuilder actionsB = new ActionBuilder();
63 actionsB.setAction(new GroupActionCaseBuilder().setGroupAction(groupIdaction).build());
66 GroupActionBuilder groupActionBuilder1 = new GroupActionBuilder();
67 groupActionBuilder1.setGroup("006");
68 GroupAction groupIdaction1 = groupActionBuilder.build();
69 ActionBuilder actionsB1 = new ActionBuilder();
70 actionsB1.setAction(new GroupActionCaseBuilder().setGroupAction(groupIdaction1).build());
72 actionsList.add(actionsB.build());
73 actionsList.add(actionsB1.build());
76 BucketsBuilder bucketsB = new BucketsBuilder();
78 BucketBuilder bucketB = new BucketBuilder();
79 bucketB.setWeight(10);
80 bucketB.setWatchPort(20L);
81 bucketB.setWatchGroup(22L);
83 bucketB.setAction(actionsList);
84 Bucket bucket = bucketB.build();
86 bucketList.add(bucket); // List of bucket
88 BucketBuilder bucketB1 = new BucketBuilder();
89 bucketB1.setWeight(50);
90 bucketB1.setWatchPort(60L);
91 bucketB1.setWatchGroup(70L);
94 CopyTtlInBuilder copyTtlB = new CopyTtlInBuilder();
95 CopyTtlIn copyTtl = copyTtlB.build();
96 ActionBuilder actionsB2 = new ActionBuilder();
97 actionsB2.setAction(new CopyTtlInCaseBuilder().setCopyTtlIn(copyTtl).build());
100 SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder();
101 setMplsTtlActionBuilder.setMplsTtl((short)0X1);
102 SetMplsTtlAction setMAction = setMplsTtlActionBuilder.build();
103 ActionBuilder actionsB3 = new ActionBuilder();
105 actionsB3.setAction(new SetMplsTtlActionCaseBuilder().setSetMplsTtlAction(setMAction).build());
108 actionsList1.add(actionsB2.build());
109 actionsList1.add(actionsB3.build());
111 bucketB1.setAction(actionsList);
113 Bucket bucket1 = bucketB1.build(); // second bucket
115 bucketList.add(bucket1);
117 bucketsB.setBucket(bucketList);// List of bucket added to the Buckets
118 Buckets buckets = bucketsB.build();
120 addGroupBuilder.setBuckets(buckets);
122 GroupModInputBuilder outAddGroupInput = GroupConvertor.toGroupModInput(addGroupBuilder.build(), (short) 0X4,BigInteger.valueOf(1));
124 Assert.assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
125 Assert.assertEquals(GroupType.OFPGTALL, outAddGroupInput.getType());
127 Assert.assertEquals(10L, (long) outAddGroupInput.getGroupId().getValue());
128 Assert.assertEquals(10, (int) outAddGroupInput.getBucketsList().get(0).getWeight());
129 Assert.assertEquals(20L, (long) outAddGroupInput.getBucketsList().get(0).getWatchPort().getValue());
130 Assert.assertEquals((Long) 22L, outAddGroupInput.getBucketsList().get(0).getWatchGroup());
132 List<Action> outActionList = outAddGroupInput.getBucketsList().get(0).getAction();
133 for (int outItem = 0; outItem < outActionList.size(); outItem++) {
134 Action action = outActionList
136 if (action instanceof GroupIdAction) {
137 Assert.assertEquals((Long) 5L, ((GroupIdAction) action).getGroupId());
140 // TODO:setMplsTTL :OF layer doesnt have get();
143 Assert.assertEquals((Integer) 50, outAddGroupInput.getBucketsList().get(1).getWeight());
144 Assert.assertEquals((long) 60, (long) outAddGroupInput.getBucketsList().get(1).getWatchPort().getValue());
145 Assert.assertEquals((Long) 70L, outAddGroupInput.getBucketsList().get(1).getWatchGroup());
146 List<Action> outActionList1 = outAddGroupInput.getBucketsList().get(1).getAction();
147 for (int outItem = 0; outItem < outActionList1.size(); outItem++) {
148 Action action = outActionList1
150 if (action instanceof GroupIdAction) {
152 Assert.assertEquals((Long) 6L, ((GroupIdAction) action).getGroupId());
156 // TODO:setMplsTTL :OF layer doesnt have get();
162 * test of {@link GroupConvertor#toGroupModInput(org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.Group, short)}
165 public void testGroupModConvertorNoBucket() {
166 AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
168 addGroupBuilder.setGroupId(new GroupId(10L));
170 addGroupBuilder.setGroupType(GroupTypes.GroupAll);
172 GroupModInputBuilder outAddGroupInput = GroupConvertor.toGroupModInput(addGroupBuilder.build(), (short) 0X4,BigInteger.valueOf(1));
174 Assert.assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
175 Assert.assertEquals(GroupType.OFPGTALL, outAddGroupInput.getType());
179 * test of {@link GroupConvertor#toGroupModInput(org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.Group, short)}
182 public void testGroupModConvertorBucketwithNOWieghtValuesForGroupTypeFastFailure() {
184 AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
186 addGroupBuilder.setGroupId(new GroupId(10L));
188 addGroupBuilder.setGroupType(GroupTypes.GroupFf);
189 List<Bucket> bucketList = new ArrayList<Bucket>();
190 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>();
191 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>();
194 actionsList.add(assembleActionBuilder("005").build());
196 actionsList.add(assembleActionBuilder("006").build());
197 // .. and mr.Bond is not coming today
199 BucketsBuilder bucketsB = new BucketsBuilder();
201 BucketBuilder bucketB = new BucketBuilder();
203 bucketB.setAction(actionsList);
204 Bucket bucket = bucketB.build();
206 bucketList.add(bucket); // List of bucket
210 BucketBuilder bucketB1 = new BucketBuilder();
213 actionsList1.add(assembleCopyTtlInBuilder().build());
215 actionsList1.add(assembleSetMplsTtlActionBuilder().build());
217 bucketB1.setAction(actionsList1);
219 Bucket bucket1 = bucketB1.build(); // second bucket
221 bucketList.add(bucket1);
223 bucketsB.setBucket(bucketList);// List of bucket added to the Buckets
224 Buckets buckets = bucketsB.build();
226 addGroupBuilder.setBuckets(buckets);
228 GroupModInputBuilder outAddGroupInput = GroupConvertor.toGroupModInput(addGroupBuilder.build(), (short) 0X4,BigInteger.valueOf(1));
230 Assert.assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
231 Assert.assertEquals(GroupType.OFPGTFF, outAddGroupInput.getType());
233 Assert.assertEquals(10L, outAddGroupInput.getGroupId().getValue().longValue());
235 List<Action> outActionList = outAddGroupInput.getBucketsList().get(0).getAction();
236 for (int outItem = 0; outItem < outActionList.size(); outItem++) {
237 Action action = outActionList
239 if (action instanceof GroupIdAction) {
240 Assert.assertEquals((Long) 5L, ((GroupIdAction) action).getGroupId());
244 List<Action> outActionList1 = outAddGroupInput.getBucketsList().get(1).getAction();
245 for (int outItem = 0; outItem < outActionList1.size(); outItem++) {
246 Action action = outActionList1
248 if (action instanceof GroupIdAction) {
249 Assert.assertEquals((Long) 6L, ((GroupIdAction) action).getGroupId());
257 private static ActionBuilder assembleSetMplsTtlActionBuilder() {
258 SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder();
259 setMplsTtlActionBuilder.setMplsTtl((short) 0X1);
260 SetMplsTtlActionCaseBuilder setMplsTtlActionCaseBuilder = new SetMplsTtlActionCaseBuilder();
261 setMplsTtlActionCaseBuilder.setSetMplsTtlAction(setMplsTtlActionBuilder.build());
262 ActionBuilder actionsB3 = new ActionBuilder();
263 actionsB3.setAction(setMplsTtlActionCaseBuilder.build());
270 private static ActionBuilder assembleCopyTtlInBuilder() {
271 CopyTtlInBuilder copyTtlB = new CopyTtlInBuilder();
272 CopyTtlInCaseBuilder copyTtlInCaseBuilder = new CopyTtlInCaseBuilder();
273 copyTtlInCaseBuilder.setCopyTtlIn(copyTtlB.build());
274 ActionBuilder actionsB2 = new ActionBuilder();
275 actionsB2.setAction(copyTtlInCaseBuilder.build());
280 * @param groupName name of group
284 private static ActionBuilder assembleActionBuilder(String groupName) {
285 GroupActionBuilder groupActionBuilder = new GroupActionBuilder();
286 groupActionBuilder.setGroup(groupName);
287 GroupActionCaseBuilder groupActionCaseBuilder = new GroupActionCaseBuilder();
288 groupActionCaseBuilder.setGroupAction(groupActionBuilder.build());
289 ActionBuilder actionsBld = new ActionBuilder();
290 actionsBld.setAction(groupActionCaseBuilder.build());
295 * test of {@link GroupConvertor#toGroupModInput(org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.Group, short)}
298 public void testGroupModConvertorBucketwithNOWieghtValuesForGroupTypeAll() {
300 AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
302 addGroupBuilder.setGroupId(new GroupId(10L));
304 addGroupBuilder.setGroupType(GroupTypes.GroupAll);
305 List<Bucket> bucketList = new ArrayList<Bucket>();
306 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>();
307 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>();
310 actionsList.add(assembleActionBuilder("005").build());
312 actionsList.add(assembleActionBuilder("006").build());
314 BucketsBuilder bucketsB = new BucketsBuilder();
316 BucketBuilder bucketB = new BucketBuilder();
318 bucketB.setAction(actionsList);
319 Bucket bucket = bucketB.build();
321 bucketList.add(bucket); // List of bucket
323 BucketBuilder bucketB1 = new BucketBuilder();
326 actionsList1.add(assembleCopyTtlInBuilder().build());
328 actionsList1.add(assembleSetMplsTtlActionBuilder().build());
330 bucketB1.setAction(actionsList);
332 Bucket bucket1 = bucketB1.build(); // second bucket
334 bucketList.add(bucket1);
336 bucketsB.setBucket(bucketList);// List of bucket added to the Buckets
337 Buckets buckets = bucketsB.build();
339 addGroupBuilder.setBuckets(buckets);
341 GroupModInputBuilder outAddGroupInput = GroupConvertor.toGroupModInput(addGroupBuilder.build(), (short) 0X4,BigInteger.valueOf(1));
343 Assert.assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
344 Assert.assertEquals(GroupType.OFPGTALL, outAddGroupInput.getType());
346 Assert.assertEquals(10L, outAddGroupInput.getGroupId().getValue().longValue());
348 List<Action> outActionList = outAddGroupInput.getBucketsList().get(0).getAction();
349 for (int outItem = 0; outItem < outActionList.size(); outItem++) {
350 Action action = outActionList
352 if (action instanceof GroupIdAction) {
353 Assert.assertEquals((Long) 5L, ((GroupIdAction) action).getGroupId());
359 List<Action> outActionList1 = outAddGroupInput.getBucketsList().get(1).getAction();
360 for (int outItem = 0; outItem < outActionList1.size(); outItem++) {
361 Action action = outActionList1
363 if (action instanceof GroupIdAction) {
365 Assert.assertEquals((Long) 6L, ((GroupIdAction) action).getGroupId());