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>();
61 GroupActionBuilder groupActionBuilder = new GroupActionBuilder();
62 groupActionBuilder.setGroup("005");
63 GroupAction groupIdaction = groupActionBuilder.build();
64 ActionBuilder actionsB = new ActionBuilder();
65 actionsB.setOrder(actionOrder++).setAction(new GroupActionCaseBuilder().setGroupAction(groupIdaction).build());
68 GroupActionBuilder groupActionBuilder1 = new GroupActionBuilder();
69 groupActionBuilder1.setGroup("006");
70 GroupAction groupIdaction1 = groupActionBuilder.build();
71 ActionBuilder actionsB1 = new ActionBuilder();
72 actionsB1.setOrder(actionOrder++).setAction(new GroupActionCaseBuilder().setGroupAction(groupIdaction1).build());
74 actionsList.add(actionsB.build());
75 actionsList.add(actionsB1.build());
78 BucketsBuilder bucketsB = new BucketsBuilder();
80 BucketBuilder bucketB = new BucketBuilder();
81 bucketB.setWeight(10);
82 bucketB.setWatchPort(20L);
83 bucketB.setWatchGroup(22L);
85 bucketB.setAction(actionsList);
86 Bucket bucket = bucketB.build();
88 bucketList.add(bucket); // List of bucket
90 BucketBuilder bucketB1 = new BucketBuilder();
91 bucketB1.setWeight(50);
92 bucketB1.setWatchPort(60L);
93 bucketB1.setWatchGroup(70L);
96 CopyTtlInBuilder copyTtlB = new CopyTtlInBuilder();
97 CopyTtlIn copyTtl = copyTtlB.build();
98 ActionBuilder actionsB2 = new ActionBuilder();
99 actionsB2.setOrder(actionOrder++).setAction(new CopyTtlInCaseBuilder().setCopyTtlIn(copyTtl).build());
102 SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder();
103 setMplsTtlActionBuilder.setMplsTtl((short)0X1);
104 SetMplsTtlAction setMAction = setMplsTtlActionBuilder.build();
105 ActionBuilder actionsB3 = new ActionBuilder();
107 actionsB3.setOrder(actionOrder++).setAction(new SetMplsTtlActionCaseBuilder().setSetMplsTtlAction(setMAction).build());
110 actionsList1.add(actionsB2.build());
111 actionsList1.add(actionsB3.build());
113 bucketB1.setAction(actionsList);
115 Bucket bucket1 = bucketB1.build(); // second bucket
117 bucketList.add(bucket1);
119 bucketsB.setBucket(bucketList);// List of bucket added to the Buckets
120 Buckets buckets = bucketsB.build();
122 addGroupBuilder.setBuckets(buckets);
124 GroupModInputBuilder outAddGroupInput = GroupConvertor.toGroupModInput(addGroupBuilder.build(), (short) 0X4,BigInteger.valueOf(1));
126 Assert.assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
127 Assert.assertEquals(GroupType.OFPGTALL, outAddGroupInput.getType());
129 Assert.assertEquals(10L, (long) outAddGroupInput.getGroupId().getValue());
130 Assert.assertEquals(10, (int) outAddGroupInput.getBucketsList().get(0).getWeight());
131 Assert.assertEquals(20L, (long) outAddGroupInput.getBucketsList().get(0).getWatchPort().getValue());
132 Assert.assertEquals((Long) 22L, outAddGroupInput.getBucketsList().get(0).getWatchGroup());
134 List<Action> outActionList = outAddGroupInput.getBucketsList().get(0).getAction();
135 for (int outItem = 0; outItem < outActionList.size(); outItem++) {
136 Action action = outActionList
138 if (action instanceof GroupIdAction) {
139 Assert.assertEquals((Long) 5L, ((GroupIdAction) action).getGroupId());
142 // TODO:setMplsTTL :OF layer doesnt have get();
145 Assert.assertEquals((Integer) 50, outAddGroupInput.getBucketsList().get(1).getWeight());
146 Assert.assertEquals((long) 60, (long) outAddGroupInput.getBucketsList().get(1).getWatchPort().getValue());
147 Assert.assertEquals((Long) 70L, outAddGroupInput.getBucketsList().get(1).getWatchGroup());
148 List<Action> outActionList1 = outAddGroupInput.getBucketsList().get(1).getAction();
149 for (int outItem = 0; outItem < outActionList1.size(); outItem++) {
150 Action action = outActionList1
152 if (action instanceof GroupIdAction) {
154 Assert.assertEquals((Long) 6L, ((GroupIdAction) action).getGroupId());
158 // TODO:setMplsTTL :OF layer doesnt have get();
164 * test of {@link GroupConvertor#toGroupModInput(org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.Group, short)}
167 public void testGroupModConvertorNoBucket() {
168 AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
170 addGroupBuilder.setGroupId(new GroupId(10L));
172 addGroupBuilder.setGroupType(GroupTypes.GroupAll);
174 GroupModInputBuilder outAddGroupInput = GroupConvertor.toGroupModInput(addGroupBuilder.build(), (short) 0X4,BigInteger.valueOf(1));
176 Assert.assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
177 Assert.assertEquals(GroupType.OFPGTALL, outAddGroupInput.getType());
181 * test of {@link GroupConvertor#toGroupModInput(org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.Group, short)}
184 public void testGroupModConvertorBucketwithNOWieghtValuesForGroupTypeFastFailure() {
188 AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
190 addGroupBuilder.setGroupId(new GroupId(10L));
192 addGroupBuilder.setGroupType(GroupTypes.GroupFf);
193 List<Bucket> bucketList = new ArrayList<Bucket>();
194 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>();
195 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>();
198 actionsList.add(assembleActionBuilder("005", actionOrder++).build());
200 actionsList.add(assembleActionBuilder("006", actionOrder++).build());
201 // .. and mr.Bond is not coming today
203 BucketsBuilder bucketsB = new BucketsBuilder();
205 BucketBuilder bucketB = new BucketBuilder();
207 bucketB.setAction(actionsList);
208 Bucket bucket = bucketB.build();
210 bucketList.add(bucket); // List of bucket
214 BucketBuilder bucketB1 = new BucketBuilder();
217 actionsList1.add(assembleCopyTtlInBuilder(actionOrder++).build());
219 actionsList1.add(assembleSetMplsTtlActionBuilder(actionOrder++).build());
221 bucketB1.setAction(actionsList1);
223 Bucket bucket1 = bucketB1.build(); // second bucket
225 bucketList.add(bucket1);
227 bucketsB.setBucket(bucketList);// List of bucket added to the Buckets
228 Buckets buckets = bucketsB.build();
230 addGroupBuilder.setBuckets(buckets);
232 GroupModInputBuilder outAddGroupInput = GroupConvertor.toGroupModInput(addGroupBuilder.build(), (short) 0X4,BigInteger.valueOf(1));
234 Assert.assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
235 Assert.assertEquals(GroupType.OFPGTFF, outAddGroupInput.getType());
237 Assert.assertEquals(10L, outAddGroupInput.getGroupId().getValue().longValue());
239 List<Action> outActionList = outAddGroupInput.getBucketsList().get(0).getAction();
240 for (int outItem = 0; outItem < outActionList.size(); outItem++) {
241 Action action = outActionList
243 if (action instanceof GroupIdAction) {
244 Assert.assertEquals((Long) 5L, ((GroupIdAction) action).getGroupId());
248 List<Action> outActionList1 = outAddGroupInput.getBucketsList().get(1).getAction();
249 for (int outItem = 0; outItem < outActionList1.size(); outItem++) {
250 Action action = outActionList1
252 if (action instanceof GroupIdAction) {
253 Assert.assertEquals((Long) 6L, ((GroupIdAction) action).getGroupId());
261 private static ActionBuilder assembleSetMplsTtlActionBuilder(int actionOrder) {
262 SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder();
263 setMplsTtlActionBuilder.setMplsTtl((short) 0X1);
264 SetMplsTtlActionCaseBuilder setMplsTtlActionCaseBuilder = new SetMplsTtlActionCaseBuilder();
265 setMplsTtlActionCaseBuilder.setSetMplsTtlAction(setMplsTtlActionBuilder.build());
266 ActionBuilder actionsB3 = new ActionBuilder();
267 actionsB3.setOrder(actionOrder).setAction(setMplsTtlActionCaseBuilder.build());
274 private static ActionBuilder assembleCopyTtlInBuilder(int actionOrder) {
275 CopyTtlInBuilder copyTtlB = new CopyTtlInBuilder();
276 CopyTtlInCaseBuilder copyTtlInCaseBuilder = new CopyTtlInCaseBuilder();
277 copyTtlInCaseBuilder.setCopyTtlIn(copyTtlB.build());
278 ActionBuilder actionsB2 = new ActionBuilder();
279 actionsB2.setOrder(actionOrder).setAction(copyTtlInCaseBuilder.build());
284 * @param groupName name of group
288 private static ActionBuilder assembleActionBuilder(String groupName, int actionOrder) {
289 GroupActionBuilder groupActionBuilder = new GroupActionBuilder();
290 groupActionBuilder.setGroup(groupName);
291 GroupActionCaseBuilder groupActionCaseBuilder = new GroupActionCaseBuilder();
292 groupActionCaseBuilder.setGroupAction(groupActionBuilder.build());
293 ActionBuilder actionsBld = new ActionBuilder();
294 actionsBld.setOrder(actionOrder).setAction(groupActionCaseBuilder.build());
299 * test of {@link GroupConvertor#toGroupModInput(org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.Group, short)}
302 public void testGroupModConvertorBucketwithNOWieghtValuesForGroupTypeAll() {
306 AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
308 addGroupBuilder.setGroupId(new GroupId(10L));
310 addGroupBuilder.setGroupType(GroupTypes.GroupAll);
311 List<Bucket> bucketList = new ArrayList<Bucket>();
312 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>();
313 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>();
316 actionsList.add(assembleActionBuilder("005", actionOrder++).build());
318 actionsList.add(assembleActionBuilder("006", actionOrder++).build());
320 BucketsBuilder bucketsB = new BucketsBuilder();
322 BucketBuilder bucketB = new BucketBuilder();
324 bucketB.setAction(actionsList);
325 Bucket bucket = bucketB.build();
327 bucketList.add(bucket); // List of bucket
329 BucketBuilder bucketB1 = new BucketBuilder();
332 actionsList1.add(assembleCopyTtlInBuilder(actionOrder++).build());
334 actionsList1.add(assembleSetMplsTtlActionBuilder(actionOrder++).build());
336 bucketB1.setAction(actionsList);
338 Bucket bucket1 = bucketB1.build(); // second bucket
340 bucketList.add(bucket1);
342 bucketsB.setBucket(bucketList);// List of bucket added to the Buckets
343 Buckets buckets = bucketsB.build();
345 addGroupBuilder.setBuckets(buckets);
347 GroupModInputBuilder outAddGroupInput = GroupConvertor.toGroupModInput(addGroupBuilder.build(), (short) 0X4,BigInteger.valueOf(1));
349 Assert.assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
350 Assert.assertEquals(GroupType.OFPGTALL, outAddGroupInput.getType());
352 Assert.assertEquals(10L, outAddGroupInput.getGroupId().getValue().longValue());
354 List<Action> outActionList = outAddGroupInput.getBucketsList().get(0).getAction();
355 for (int outItem = 0; outItem < outActionList.size(); outItem++) {
356 Action action = outActionList
358 if (action instanceof GroupIdAction) {
359 Assert.assertEquals((Long) 5L, ((GroupIdAction) action).getGroupId());
365 List<Action> outActionList1 = outAddGroupInput.getBucketsList().get(1).getAction();
366 for (int outItem = 0; outItem < outActionList1.size(); outItem++) {
367 Action action = outActionList1
369 if (action instanceof GroupIdAction) {
371 Assert.assertEquals((Long) 6L, ((GroupIdAction) action).getGroupId());