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 org.junit.Assert;
13 import org.junit.Test;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlInCaseBuilder;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.GroupActionCase;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.GroupActionCaseBuilder;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetMplsTtlActionCaseBuilder;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.in._case.CopyTtlIn;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.in._case.CopyTtlInBuilder;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.group.action._case.GroupAction;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.group.action._case.GroupActionBuilder;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.mpls.ttl.action._case.SetMplsTtlAction;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.mpls.ttl.action._case.SetMplsTtlActionBuilder;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.AddGroupInputBuilder;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupId;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupTypes;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.Buckets;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.BucketsBuilder;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.Bucket;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.BucketBuilder;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.Action;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.GroupModCommand;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.GroupType;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GroupModInputBuilder;
36 import java.math.BigInteger;
37 import java.util.ArrayList;
38 import java.util.List;
40 public class GroupConvertorTest {
43 * test of {@link GroupConvertor#toGroupModInput(org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.Group, short, java.math.BigInteger)}
46 public void testGroupModConvertorwithallParameters() {
48 AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
50 addGroupBuilder.setGroupId(new GroupId(10L));
52 addGroupBuilder.setGroupType(GroupTypes.GroupAll);
53 List<Bucket> bucketList = new ArrayList<Bucket>();
54 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>();
55 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>();
60 GroupActionBuilder groupActionBuilder = new GroupActionBuilder();
61 groupActionBuilder.setGroup("005");
62 GroupAction groupIdaction = groupActionBuilder.build();
63 ActionBuilder actionsB = new ActionBuilder();
64 actionsB.setOrder(actionOrder++).setAction(new GroupActionCaseBuilder().setGroupAction(groupIdaction).build());
67 GroupActionBuilder groupActionBuilder1 = new GroupActionBuilder();
68 groupActionBuilder1.setGroup("006");
69 GroupAction groupIdaction1 = groupActionBuilder.build();
70 ActionBuilder actionsB1 = new ActionBuilder();
71 actionsB1.setOrder(actionOrder++).setAction(new GroupActionCaseBuilder().setGroupAction(groupIdaction1).build());
73 actionsList.add(actionsB.build());
74 actionsList.add(actionsB1.build());
77 BucketsBuilder bucketsB = new BucketsBuilder();
79 BucketBuilder bucketB = new BucketBuilder();
80 bucketB.setWeight(10);
81 bucketB.setWatchPort(20L);
82 bucketB.setWatchGroup(22L);
84 bucketB.setAction(actionsList);
85 Bucket bucket = bucketB.build();
87 bucketList.add(bucket); // List of bucket
89 BucketBuilder bucketB1 = new BucketBuilder();
90 bucketB1.setWeight(50);
91 bucketB1.setWatchPort(60L);
92 bucketB1.setWatchGroup(70L);
95 CopyTtlInBuilder copyTtlB = new CopyTtlInBuilder();
96 CopyTtlIn copyTtl = copyTtlB.build();
97 ActionBuilder actionsB2 = new ActionBuilder();
98 actionsB2.setOrder(actionOrder++).setAction(new CopyTtlInCaseBuilder().setCopyTtlIn(copyTtl).build());
101 SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder();
102 setMplsTtlActionBuilder.setMplsTtl((short) 0X1);
103 SetMplsTtlAction setMAction = setMplsTtlActionBuilder.build();
104 ActionBuilder actionsB3 = new ActionBuilder();
106 actionsB3.setOrder(actionOrder++).setAction(new SetMplsTtlActionCaseBuilder().setSetMplsTtlAction(setMAction).build());
109 actionsList1.add(actionsB2.build());
110 actionsList1.add(actionsB3.build());
112 bucketB1.setAction(actionsList);
114 Bucket bucket1 = bucketB1.build(); // second bucket
116 bucketList.add(bucket1);
118 bucketsB.setBucket(bucketList);// List of bucket added to the Buckets
119 Buckets buckets = bucketsB.build();
121 addGroupBuilder.setBuckets(buckets);
123 GroupModInputBuilder outAddGroupInput = GroupConvertor.toGroupModInput(addGroupBuilder.build(), (short) 0X4, BigInteger.valueOf(1));
125 Assert.assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
126 Assert.assertEquals(GroupType.OFPGTALL, outAddGroupInput.getType());
128 Assert.assertEquals(10L, (long) outAddGroupInput.getGroupId().getValue());
129 Assert.assertEquals(10, (int) outAddGroupInput.getBucketsList().get(0).getWeight());
130 Assert.assertEquals(20L, (long) outAddGroupInput.getBucketsList().get(0).getWatchPort().getValue());
131 Assert.assertEquals((Long) 22L, outAddGroupInput.getBucketsList().get(0).getWatchGroup());
133 List<Action> outActionList = outAddGroupInput.getBucketsList().get(0).getAction();
134 for (int outItem = 0; outItem < outActionList.size(); outItem++) {
135 Action action = outActionList
137 if (action.getActionChoice() instanceof GroupActionCase) {
138 Assert.assertEquals((Long) 5L, ((GroupActionCase) action.getActionChoice()).getGroupAction().getGroupId());
141 // TODO:setMplsTTL :OF layer doesnt have get();
144 Assert.assertEquals((Integer) 50, outAddGroupInput.getBucketsList().get(1).getWeight());
145 Assert.assertEquals((long) 60, (long) outAddGroupInput.getBucketsList().get(1).getWatchPort().getValue());
146 Assert.assertEquals((Long) 70L, outAddGroupInput.getBucketsList().get(1).getWatchGroup());
147 List<Action> outActionList1 = outAddGroupInput.getBucketsList().get(1).getAction();
148 for (int outItem = 0; outItem < outActionList1.size(); outItem++) {
149 Action action = outActionList1
151 if (action.getActionChoice() instanceof GroupActionCase) {
153 Assert.assertEquals((Long) 6L, ((GroupActionCase) action.getActionChoice()).getGroupAction().getGroupId());
157 // TODO:setMplsTTL :OF layer doesnt have get();
163 * test of {@link GroupConvertor#toGroupModInput(org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.Group, short, java.math.BigInteger)}
166 public void testGroupModConvertorNoBucket() {
167 AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
169 addGroupBuilder.setGroupId(new GroupId(10L));
171 addGroupBuilder.setGroupType(GroupTypes.GroupAll);
173 GroupModInputBuilder outAddGroupInput = GroupConvertor.toGroupModInput(addGroupBuilder.build(), (short) 0X4, BigInteger.valueOf(1));
175 Assert.assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
176 Assert.assertEquals(GroupType.OFPGTALL, outAddGroupInput.getType());
180 * test of {@link GroupConvertor#toGroupModInput(org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.Group, short, java.math.BigInteger)}
183 public void testGroupModConvertorBucketwithNOWieghtValuesForGroupTypeFastFailure() {
187 AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
189 addGroupBuilder.setGroupId(new GroupId(10L));
191 addGroupBuilder.setGroupType(GroupTypes.GroupFf);
192 List<Bucket> bucketList = new ArrayList<Bucket>();
193 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>();
194 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>();
197 actionsList.add(assembleActionBuilder("005", actionOrder++).build());
199 actionsList.add(assembleActionBuilder("006", actionOrder++).build());
200 // .. and mr.Bond is not coming today
202 BucketsBuilder bucketsB = new BucketsBuilder();
204 BucketBuilder bucketB = new BucketBuilder();
206 bucketB.setAction(actionsList);
207 Bucket bucket = bucketB.build();
209 bucketList.add(bucket); // List of bucket
212 BucketBuilder bucketB1 = new BucketBuilder();
215 actionsList1.add(assembleCopyTtlInBuilder(actionOrder++).build());
217 actionsList1.add(assembleSetMplsTtlActionBuilder(actionOrder++).build());
219 bucketB1.setAction(actionsList1);
221 Bucket bucket1 = bucketB1.build(); // second bucket
223 bucketList.add(bucket1);
225 bucketsB.setBucket(bucketList);// List of bucket added to the Buckets
226 Buckets buckets = bucketsB.build();
228 addGroupBuilder.setBuckets(buckets);
230 GroupModInputBuilder outAddGroupInput = GroupConvertor.toGroupModInput(addGroupBuilder.build(), (short) 0X4, BigInteger.valueOf(1));
232 Assert.assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
233 Assert.assertEquals(GroupType.OFPGTFF, outAddGroupInput.getType());
235 Assert.assertEquals(10L, outAddGroupInput.getGroupId().getValue().longValue());
237 List<Action> outActionList = outAddGroupInput.getBucketsList().get(0).getAction();
238 for (int outItem = 0; outItem < outActionList.size(); outItem++) {
239 Action action = outActionList
241 if (action.getActionChoice() instanceof GroupActionCase) {
242 Assert.assertEquals((Long) 5L, ((GroupActionCase) action.getActionChoice()).getGroupAction().getGroupId());
246 List<Action> outActionList1 = outAddGroupInput.getBucketsList().get(1).getAction();
247 for (int outItem = 0; outItem < outActionList1.size(); outItem++) {
248 Action action = outActionList1
250 if (action.getActionChoice() instanceof GroupActionCase) {
251 Assert.assertEquals((Long) 6L, ((GroupActionCase) action.getActionChoice()).getGroupAction().getGroupId());
259 private static ActionBuilder assembleSetMplsTtlActionBuilder(int actionOrder) {
260 SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder();
261 setMplsTtlActionBuilder.setMplsTtl((short) 0X1);
262 SetMplsTtlActionCaseBuilder setMplsTtlActionCaseBuilder = new SetMplsTtlActionCaseBuilder();
263 setMplsTtlActionCaseBuilder.setSetMplsTtlAction(setMplsTtlActionBuilder.build());
264 ActionBuilder actionsB3 = new ActionBuilder();
265 actionsB3.setOrder(actionOrder).setAction(setMplsTtlActionCaseBuilder.build());
272 private static ActionBuilder assembleCopyTtlInBuilder(int actionOrder) {
273 CopyTtlInBuilder copyTtlB = new CopyTtlInBuilder();
274 CopyTtlInCaseBuilder copyTtlInCaseBuilder = new CopyTtlInCaseBuilder();
275 copyTtlInCaseBuilder.setCopyTtlIn(copyTtlB.build());
276 ActionBuilder actionsB2 = new ActionBuilder();
277 actionsB2.setOrder(actionOrder).setAction(copyTtlInCaseBuilder.build());
282 * @param groupName name of group
285 private static ActionBuilder assembleActionBuilder(String groupName, int actionOrder) {
286 GroupActionBuilder groupActionBuilder = new GroupActionBuilder();
287 groupActionBuilder.setGroup(groupName);
288 GroupActionCaseBuilder groupActionCaseBuilder = new GroupActionCaseBuilder();
289 groupActionCaseBuilder.setGroupAction(groupActionBuilder.build());
290 ActionBuilder actionsBld = new ActionBuilder();
291 actionsBld.setOrder(actionOrder).setAction(groupActionCaseBuilder.build());
296 * test of {@link GroupConvertor#toGroupModInput(org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.Group, short, java.math.BigInteger)} )}
299 public void testGroupModConvertorBucketwithNOWieghtValuesForGroupTypeAll() {
303 AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
305 addGroupBuilder.setGroupId(new GroupId(10L));
307 addGroupBuilder.setGroupType(GroupTypes.GroupAll);
308 List<Bucket> bucketList = new ArrayList<Bucket>();
309 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>();
310 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>();
313 actionsList.add(assembleActionBuilder("005", actionOrder++).build());
315 actionsList.add(assembleActionBuilder("006", actionOrder++).build());
317 BucketsBuilder bucketsB = new BucketsBuilder();
319 BucketBuilder bucketB = new BucketBuilder();
321 bucketB.setAction(actionsList);
322 Bucket bucket = bucketB.build();
324 bucketList.add(bucket); // List of bucket
326 BucketBuilder bucketB1 = new BucketBuilder();
329 actionsList1.add(assembleCopyTtlInBuilder(actionOrder++).build());
331 actionsList1.add(assembleSetMplsTtlActionBuilder(actionOrder++).build());
333 bucketB1.setAction(actionsList);
335 Bucket bucket1 = bucketB1.build(); // second bucket
337 bucketList.add(bucket1);
339 bucketsB.setBucket(bucketList);// List of bucket added to the Buckets
340 Buckets buckets = bucketsB.build();
342 addGroupBuilder.setBuckets(buckets);
344 GroupModInputBuilder outAddGroupInput = GroupConvertor.toGroupModInput(addGroupBuilder.build(), (short) 0X4, BigInteger.valueOf(1));
346 Assert.assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
347 Assert.assertEquals(GroupType.OFPGTALL, outAddGroupInput.getType());
349 Assert.assertEquals(10L, outAddGroupInput.getGroupId().getValue().longValue());
351 List<Action> outActionList = outAddGroupInput.getBucketsList().get(0).getAction();
352 for (int outItem = 0; outItem < outActionList.size(); outItem++) {
353 Action action = outActionList
355 if (action.getActionChoice() instanceof GroupActionCase) {
356 Assert.assertEquals((Long) 5L, ((GroupActionCase) action.getActionChoice()).getGroupAction().getGroupId());
362 List<Action> outActionList1 = outAddGroupInput.getBucketsList().get(1).getAction();
363 for (int outItem = 0; outItem < outActionList1.size(); outItem++) {
364 Action action = outActionList1
366 if (action.getActionChoice() instanceof GroupActionCase) {
368 Assert.assertEquals((Long) 6L, ((GroupActionCase) action.getActionChoice()).getGroupAction().getGroupId());