1 package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor;
3 import java.util.ArrayList;
6 import org.junit.Assert;
8 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlInCaseBuilder;
9 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.GroupActionCaseBuilder;
10 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetMplsTtlActionCaseBuilder;
11 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.in._case.CopyTtlIn;
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.in._case.CopyTtlInBuilder;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.group.action._case.GroupAction;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.group.action._case.GroupActionBuilder;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.mpls.ttl.action._case.SetMplsTtlAction;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.mpls.ttl.action._case.SetMplsTtlActionBuilder;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.AddGroupInputBuilder;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupId;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupTypes;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.Buckets;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.BucketsBuilder;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.Bucket;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.BucketBuilder;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.GroupIdAction;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.ActionsList;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.GroupModCommand;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.GroupType;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GroupModInput;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GroupModInputBuilder;
32 public class GroupConvertorTest {
35 * test of {@link GroupConvertor#toGroupModInput(org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.Group, short)}
38 public void testGroupModConvertorwithallParameters() {
40 AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
42 addGroupBuilder.setGroupId(new GroupId(10L));
44 addGroupBuilder.setGroupType(GroupTypes.GroupAll);
45 List<Bucket> bucketList = new ArrayList<Bucket>();
46 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>();
47 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>();
50 GroupActionBuilder groupActionBuilder = new GroupActionBuilder();
51 groupActionBuilder.setGroup("005");
52 GroupAction groupIdaction = groupActionBuilder.build();
53 ActionBuilder actionsB = new ActionBuilder();
54 actionsB.setAction(new GroupActionCaseBuilder().setGroupAction(groupIdaction).build());
57 GroupActionBuilder groupActionBuilder1 = new GroupActionBuilder();
58 groupActionBuilder1.setGroup("006");
59 GroupAction groupIdaction1 = groupActionBuilder.build();
60 ActionBuilder actionsB1 = new ActionBuilder();
61 actionsB1.setAction(new GroupActionCaseBuilder().setGroupAction(groupIdaction1).build());
63 actionsList.add(actionsB.build());
64 actionsList.add(actionsB1.build());
67 BucketsBuilder bucketsB = new BucketsBuilder();
69 BucketBuilder bucketB = new BucketBuilder();
70 bucketB.setWeight(10);
71 bucketB.setWatchPort(20L);
72 bucketB.setWatchGroup(22L);
74 bucketB.setAction(actionsList);
75 Bucket bucket = bucketB.build();
77 bucketList.add(bucket); // List of bucket
79 BucketBuilder bucketB1 = new BucketBuilder();
80 bucketB1.setWeight(50);
81 bucketB1.setWatchPort(60L);
82 bucketB1.setWatchGroup(70L);
85 CopyTtlInBuilder copyTtlB = new CopyTtlInBuilder();
86 CopyTtlIn copyTtl = copyTtlB.build();
87 ActionBuilder actionsB2 = new ActionBuilder();
88 actionsB2.setAction(new CopyTtlInCaseBuilder().setCopyTtlIn(copyTtl).build());
91 SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder();
92 setMplsTtlActionBuilder.setMplsTtl((short)0X1);
93 SetMplsTtlAction setMAction = setMplsTtlActionBuilder.build();
94 ActionBuilder actionsB3 = new ActionBuilder();
96 actionsB3.setAction(new SetMplsTtlActionCaseBuilder().setSetMplsTtlAction(setMAction).build());
99 actionsList1.add(actionsB2.build());
100 actionsList1.add(actionsB3.build());
102 bucketB1.setAction(actionsList);
104 Bucket bucket1 = bucketB1.build(); // second bucket
106 bucketList.add(bucket1);
108 bucketsB.setBucket(bucketList);// List of bucket added to the Buckets
109 Buckets buckets = bucketsB.build();
111 addGroupBuilder.setBuckets(buckets);
113 GroupModInputBuilder outAddGroupInput = GroupConvertor.toGroupModInput(addGroupBuilder.build(), (short) 0X4);
115 Assert.assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
116 Assert.assertEquals(GroupType.OFPGTALL, outAddGroupInput.getType());
118 Assert.assertEquals(10L, (long) outAddGroupInput.getGroupId().getValue());
119 Assert.assertEquals(10, (int) outAddGroupInput.getBucketsList().get(0).getWeight());
120 Assert.assertEquals(20L, (long) outAddGroupInput.getBucketsList().get(0).getWatchPort().getValue());
121 Assert.assertEquals((Long) 22L, outAddGroupInput.getBucketsList().get(0).getWatchGroup());
123 List<ActionsList> outActionList = outAddGroupInput.getBucketsList().get(0).getActionsList();
124 for (int outItem = 0; outItem < outActionList.size(); outItem++) {
125 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.actions.list.Action action = outActionList
126 .get(outItem).getAction();
127 if (action instanceof GroupIdAction) {
128 Assert.assertEquals((Long) 5L, ((GroupIdAction) action).getGroupId());
131 // TODO:setMplsTTL :OF layer doesnt have get();
134 Assert.assertEquals((Integer) 50, outAddGroupInput.getBucketsList().get(1).getWeight());
135 Assert.assertEquals((long) 60, (long) outAddGroupInput.getBucketsList().get(1).getWatchPort().getValue());
136 Assert.assertEquals((Long) 70L, outAddGroupInput.getBucketsList().get(1).getWatchGroup());
137 List<ActionsList> outActionList1 = outAddGroupInput.getBucketsList().get(1).getActionsList();
138 for (int outItem = 0; outItem < outActionList1.size(); outItem++) {
139 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.actions.list.Action action = outActionList1
140 .get(outItem).getAction();
141 if (action instanceof GroupIdAction) {
143 Assert.assertEquals((Long) 6L, ((GroupIdAction) action).getGroupId());
147 // TODO:setMplsTTL :OF layer doesnt have get();
153 * test of {@link GroupConvertor#toGroupModInput(org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.Group, short)}
156 public void testGroupModConvertorNoBucket() {
157 AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
159 addGroupBuilder.setGroupId(new GroupId(10L));
161 addGroupBuilder.setGroupType(GroupTypes.GroupAll);
163 GroupModInputBuilder outAddGroupInput = GroupConvertor.toGroupModInput(addGroupBuilder.build(), (short) 0X4);
165 Assert.assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
166 Assert.assertEquals(GroupType.OFPGTALL, outAddGroupInput.getType());
170 * test of {@link GroupConvertor#toGroupModInput(org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.Group, short)}
173 public void testGroupModConvertorBucketwithNOWieghtValuesForGroupTypeFastFailure() {
175 AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
177 addGroupBuilder.setGroupId(new GroupId(10L));
179 addGroupBuilder.setGroupType(GroupTypes.GroupFf);
180 List<Bucket> bucketList = new ArrayList<Bucket>();
181 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>();
182 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>();
185 actionsList.add(assembleActionBuilder("005").build());
187 actionsList.add(assembleActionBuilder("006").build());
188 // .. and mr.Bond is not coming today
190 BucketsBuilder bucketsB = new BucketsBuilder();
192 BucketBuilder bucketB = new BucketBuilder();
194 bucketB.setAction(actionsList);
195 Bucket bucket = bucketB.build();
197 bucketList.add(bucket); // List of bucket
201 BucketBuilder bucketB1 = new BucketBuilder();
204 actionsList1.add(assembleCopyTtlInBuilder().build());
206 actionsList1.add(assembleSetMplsTtlActionBuilder().build());
208 bucketB1.setAction(actionsList1);
210 Bucket bucket1 = bucketB1.build(); // second bucket
212 bucketList.add(bucket1);
214 bucketsB.setBucket(bucketList);// List of bucket added to the Buckets
215 Buckets buckets = bucketsB.build();
217 addGroupBuilder.setBuckets(buckets);
219 GroupModInputBuilder outAddGroupInput = GroupConvertor.toGroupModInput(addGroupBuilder.build(), (short) 0X4);
221 Assert.assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
222 Assert.assertEquals(GroupType.OFPGTFF, outAddGroupInput.getType());
224 Assert.assertEquals(10L, outAddGroupInput.getGroupId().getValue().longValue());
226 List<ActionsList> outActionList = outAddGroupInput.getBucketsList().get(0).getActionsList();
227 for (int outItem = 0; outItem < outActionList.size(); outItem++) {
228 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.actions.list.Action action = outActionList
229 .get(outItem).getAction();
230 if (action instanceof GroupIdAction) {
231 Assert.assertEquals((Long) 5L, ((GroupIdAction) action).getGroupId());
235 List<ActionsList> outActionList1 = outAddGroupInput.getBucketsList().get(1).getActionsList();
236 for (int outItem = 0; outItem < outActionList1.size(); outItem++) {
237 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.actions.list.Action action = outActionList1
238 .get(outItem).getAction();
239 if (action instanceof GroupIdAction) {
240 Assert.assertEquals((Long) 6L, ((GroupIdAction) action).getGroupId());
248 private static ActionBuilder assembleSetMplsTtlActionBuilder() {
249 SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder();
250 setMplsTtlActionBuilder.setMplsTtl((short) 0X1);
251 SetMplsTtlActionCaseBuilder setMplsTtlActionCaseBuilder = new SetMplsTtlActionCaseBuilder();
252 setMplsTtlActionCaseBuilder.setSetMplsTtlAction(setMplsTtlActionBuilder.build());
253 ActionBuilder actionsB3 = new ActionBuilder();
254 actionsB3.setAction(setMplsTtlActionCaseBuilder.build());
261 private static ActionBuilder assembleCopyTtlInBuilder() {
262 CopyTtlInBuilder copyTtlB = new CopyTtlInBuilder();
263 CopyTtlInCaseBuilder copyTtlInCaseBuilder = new CopyTtlInCaseBuilder();
264 copyTtlInCaseBuilder.setCopyTtlIn(copyTtlB.build());
265 ActionBuilder actionsB2 = new ActionBuilder();
266 actionsB2.setAction(copyTtlInCaseBuilder.build());
271 * @param groupName name of group
275 private static ActionBuilder assembleActionBuilder(String groupName) {
276 GroupActionBuilder groupActionBuilder = new GroupActionBuilder();
277 groupActionBuilder.setGroup(groupName);
278 GroupActionCaseBuilder groupActionCaseBuilder = new GroupActionCaseBuilder();
279 groupActionCaseBuilder.setGroupAction(groupActionBuilder.build());
280 ActionBuilder actionsBld = new ActionBuilder();
281 actionsBld.setAction(groupActionCaseBuilder.build());
286 * test of {@link GroupConvertor#toGroupModInput(org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.Group, short)}
289 public void testGroupModConvertorBucketwithNOWieghtValuesForGroupTypeAll() {
291 AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
293 addGroupBuilder.setGroupId(new GroupId(10L));
295 addGroupBuilder.setGroupType(GroupTypes.GroupAll);
296 List<Bucket> bucketList = new ArrayList<Bucket>();
297 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>();
298 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>();
301 actionsList.add(assembleActionBuilder("005").build());
303 actionsList.add(assembleActionBuilder("006").build());
305 BucketsBuilder bucketsB = new BucketsBuilder();
307 BucketBuilder bucketB = new BucketBuilder();
309 bucketB.setAction(actionsList);
310 Bucket bucket = bucketB.build();
312 bucketList.add(bucket); // List of bucket
314 BucketBuilder bucketB1 = new BucketBuilder();
317 actionsList1.add(assembleCopyTtlInBuilder().build());
319 actionsList1.add(assembleSetMplsTtlActionBuilder().build());
321 bucketB1.setAction(actionsList);
323 Bucket bucket1 = bucketB1.build(); // second bucket
325 bucketList.add(bucket1);
327 bucketsB.setBucket(bucketList);// List of bucket added to the Buckets
328 Buckets buckets = bucketsB.build();
330 addGroupBuilder.setBuckets(buckets);
332 GroupModInputBuilder outAddGroupInput = GroupConvertor.toGroupModInput(addGroupBuilder.build(), (short) 0X4);
334 Assert.assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
335 Assert.assertEquals(GroupType.OFPGTALL, outAddGroupInput.getType());
337 Assert.assertEquals(10L, outAddGroupInput.getGroupId().getValue().longValue());
339 List<ActionsList> outActionList = outAddGroupInput.getBucketsList().get(0).getActionsList();
340 for (int outItem = 0; outItem < outActionList.size(); outItem++) {
341 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.actions.list.Action action = outActionList
342 .get(outItem).getAction();
343 if (action instanceof GroupIdAction) {
344 Assert.assertEquals((Long) 5L, ((GroupIdAction) action).getGroupId());
350 List<ActionsList> outActionList1 = outAddGroupInput.getBucketsList().get(1).getActionsList();
351 for (int outItem = 0; outItem < outActionList1.size(); outItem++) {
352 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.actions.list.Action action = outActionList1
353 .get(outItem).getAction();
354 if (action instanceof GroupIdAction) {
356 Assert.assertEquals((Long) 6L, ((GroupIdAction) action).getGroupId());