1 package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor;
3 import java.math.BigInteger;
4 import java.util.ArrayList;
7 import org.junit.Assert;
9 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlInCaseBuilder;
10 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.GroupActionCaseBuilder;
11 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetMplsTtlActionCaseBuilder;
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.in._case.CopyTtlIn;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.in._case.CopyTtlInBuilder;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.group.action._case.GroupAction;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.group.action._case.GroupActionBuilder;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.mpls.ttl.action._case.SetMplsTtlAction;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.mpls.ttl.action._case.SetMplsTtlActionBuilder;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.AddGroupInputBuilder;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupId;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupTypes;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.Buckets;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.BucketsBuilder;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.Bucket;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.BucketBuilder;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.GroupIdAction;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.ActionsList;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.GroupModCommand;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.GroupType;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GroupModInput;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GroupModInputBuilder;
33 public class GroupConvertorTest {
36 * test of {@link GroupConvertor#toGroupModInput(org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.Group, short)}
39 public void testGroupModConvertorwithallParameters() {
41 AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
43 addGroupBuilder.setGroupId(new GroupId(10L));
45 addGroupBuilder.setGroupType(GroupTypes.GroupAll);
46 List<Bucket> bucketList = new ArrayList<Bucket>();
47 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>();
48 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>();
51 GroupActionBuilder groupActionBuilder = new GroupActionBuilder();
52 groupActionBuilder.setGroup("005");
53 GroupAction groupIdaction = groupActionBuilder.build();
54 ActionBuilder actionsB = new ActionBuilder();
55 actionsB.setAction(new GroupActionCaseBuilder().setGroupAction(groupIdaction).build());
58 GroupActionBuilder groupActionBuilder1 = new GroupActionBuilder();
59 groupActionBuilder1.setGroup("006");
60 GroupAction groupIdaction1 = groupActionBuilder.build();
61 ActionBuilder actionsB1 = new ActionBuilder();
62 actionsB1.setAction(new GroupActionCaseBuilder().setGroupAction(groupIdaction1).build());
64 actionsList.add(actionsB.build());
65 actionsList.add(actionsB1.build());
68 BucketsBuilder bucketsB = new BucketsBuilder();
70 BucketBuilder bucketB = new BucketBuilder();
71 bucketB.setWeight(10);
72 bucketB.setWatchPort(20L);
73 bucketB.setWatchGroup(22L);
75 bucketB.setAction(actionsList);
76 Bucket bucket = bucketB.build();
78 bucketList.add(bucket); // List of bucket
80 BucketBuilder bucketB1 = new BucketBuilder();
81 bucketB1.setWeight(50);
82 bucketB1.setWatchPort(60L);
83 bucketB1.setWatchGroup(70L);
86 CopyTtlInBuilder copyTtlB = new CopyTtlInBuilder();
87 CopyTtlIn copyTtl = copyTtlB.build();
88 ActionBuilder actionsB2 = new ActionBuilder();
89 actionsB2.setAction(new CopyTtlInCaseBuilder().setCopyTtlIn(copyTtl).build());
92 SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder();
93 setMplsTtlActionBuilder.setMplsTtl((short)0X1);
94 SetMplsTtlAction setMAction = setMplsTtlActionBuilder.build();
95 ActionBuilder actionsB3 = new ActionBuilder();
97 actionsB3.setAction(new SetMplsTtlActionCaseBuilder().setSetMplsTtlAction(setMAction).build());
100 actionsList1.add(actionsB2.build());
101 actionsList1.add(actionsB3.build());
103 bucketB1.setAction(actionsList);
105 Bucket bucket1 = bucketB1.build(); // second bucket
107 bucketList.add(bucket1);
109 bucketsB.setBucket(bucketList);// List of bucket added to the Buckets
110 Buckets buckets = bucketsB.build();
112 addGroupBuilder.setBuckets(buckets);
114 GroupModInputBuilder outAddGroupInput = GroupConvertor.toGroupModInput(addGroupBuilder.build(), (short) 0X4,BigInteger.valueOf(1));
116 Assert.assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
117 Assert.assertEquals(GroupType.OFPGTALL, outAddGroupInput.getType());
119 Assert.assertEquals(10L, (long) outAddGroupInput.getGroupId().getValue());
120 Assert.assertEquals(10, (int) outAddGroupInput.getBucketsList().get(0).getWeight());
121 Assert.assertEquals(20L, (long) outAddGroupInput.getBucketsList().get(0).getWatchPort().getValue());
122 Assert.assertEquals((Long) 22L, outAddGroupInput.getBucketsList().get(0).getWatchGroup());
124 List<ActionsList> outActionList = outAddGroupInput.getBucketsList().get(0).getActionsList();
125 for (int outItem = 0; outItem < outActionList.size(); outItem++) {
126 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.actions.list.Action action = outActionList
127 .get(outItem).getAction();
128 if (action instanceof GroupIdAction) {
129 Assert.assertEquals((Long) 5L, ((GroupIdAction) action).getGroupId());
132 // TODO:setMplsTTL :OF layer doesnt have get();
135 Assert.assertEquals((Integer) 50, outAddGroupInput.getBucketsList().get(1).getWeight());
136 Assert.assertEquals((long) 60, (long) outAddGroupInput.getBucketsList().get(1).getWatchPort().getValue());
137 Assert.assertEquals((Long) 70L, outAddGroupInput.getBucketsList().get(1).getWatchGroup());
138 List<ActionsList> outActionList1 = outAddGroupInput.getBucketsList().get(1).getActionsList();
139 for (int outItem = 0; outItem < outActionList1.size(); outItem++) {
140 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.actions.list.Action action = outActionList1
141 .get(outItem).getAction();
142 if (action instanceof GroupIdAction) {
144 Assert.assertEquals((Long) 6L, ((GroupIdAction) action).getGroupId());
148 // TODO:setMplsTTL :OF layer doesnt have get();
154 * test of {@link GroupConvertor#toGroupModInput(org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.Group, short)}
157 public void testGroupModConvertorNoBucket() {
158 AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
160 addGroupBuilder.setGroupId(new GroupId(10L));
162 addGroupBuilder.setGroupType(GroupTypes.GroupAll);
164 GroupModInputBuilder outAddGroupInput = GroupConvertor.toGroupModInput(addGroupBuilder.build(), (short) 0X4,BigInteger.valueOf(1));
166 Assert.assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
167 Assert.assertEquals(GroupType.OFPGTALL, outAddGroupInput.getType());
171 * test of {@link GroupConvertor#toGroupModInput(org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.Group, short)}
174 public void testGroupModConvertorBucketwithNOWieghtValuesForGroupTypeFastFailure() {
176 AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
178 addGroupBuilder.setGroupId(new GroupId(10L));
180 addGroupBuilder.setGroupType(GroupTypes.GroupFf);
181 List<Bucket> bucketList = new ArrayList<Bucket>();
182 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>();
183 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>();
186 actionsList.add(assembleActionBuilder("005").build());
188 actionsList.add(assembleActionBuilder("006").build());
189 // .. and mr.Bond is not coming today
191 BucketsBuilder bucketsB = new BucketsBuilder();
193 BucketBuilder bucketB = new BucketBuilder();
195 bucketB.setAction(actionsList);
196 Bucket bucket = bucketB.build();
198 bucketList.add(bucket); // List of bucket
202 BucketBuilder bucketB1 = new BucketBuilder();
205 actionsList1.add(assembleCopyTtlInBuilder().build());
207 actionsList1.add(assembleSetMplsTtlActionBuilder().build());
209 bucketB1.setAction(actionsList1);
211 Bucket bucket1 = bucketB1.build(); // second bucket
213 bucketList.add(bucket1);
215 bucketsB.setBucket(bucketList);// List of bucket added to the Buckets
216 Buckets buckets = bucketsB.build();
218 addGroupBuilder.setBuckets(buckets);
220 GroupModInputBuilder outAddGroupInput = GroupConvertor.toGroupModInput(addGroupBuilder.build(), (short) 0X4,BigInteger.valueOf(1));
222 Assert.assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
223 Assert.assertEquals(GroupType.OFPGTFF, outAddGroupInput.getType());
225 Assert.assertEquals(10L, outAddGroupInput.getGroupId().getValue().longValue());
227 List<ActionsList> outActionList = outAddGroupInput.getBucketsList().get(0).getActionsList();
228 for (int outItem = 0; outItem < outActionList.size(); outItem++) {
229 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.actions.list.Action action = outActionList
230 .get(outItem).getAction();
231 if (action instanceof GroupIdAction) {
232 Assert.assertEquals((Long) 5L, ((GroupIdAction) action).getGroupId());
236 List<ActionsList> outActionList1 = outAddGroupInput.getBucketsList().get(1).getActionsList();
237 for (int outItem = 0; outItem < outActionList1.size(); outItem++) {
238 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.actions.list.Action action = outActionList1
239 .get(outItem).getAction();
240 if (action instanceof GroupIdAction) {
241 Assert.assertEquals((Long) 6L, ((GroupIdAction) action).getGroupId());
249 private static ActionBuilder assembleSetMplsTtlActionBuilder() {
250 SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder();
251 setMplsTtlActionBuilder.setMplsTtl((short) 0X1);
252 SetMplsTtlActionCaseBuilder setMplsTtlActionCaseBuilder = new SetMplsTtlActionCaseBuilder();
253 setMplsTtlActionCaseBuilder.setSetMplsTtlAction(setMplsTtlActionBuilder.build());
254 ActionBuilder actionsB3 = new ActionBuilder();
255 actionsB3.setAction(setMplsTtlActionCaseBuilder.build());
262 private static ActionBuilder assembleCopyTtlInBuilder() {
263 CopyTtlInBuilder copyTtlB = new CopyTtlInBuilder();
264 CopyTtlInCaseBuilder copyTtlInCaseBuilder = new CopyTtlInCaseBuilder();
265 copyTtlInCaseBuilder.setCopyTtlIn(copyTtlB.build());
266 ActionBuilder actionsB2 = new ActionBuilder();
267 actionsB2.setAction(copyTtlInCaseBuilder.build());
272 * @param groupName name of group
276 private static ActionBuilder assembleActionBuilder(String groupName) {
277 GroupActionBuilder groupActionBuilder = new GroupActionBuilder();
278 groupActionBuilder.setGroup(groupName);
279 GroupActionCaseBuilder groupActionCaseBuilder = new GroupActionCaseBuilder();
280 groupActionCaseBuilder.setGroupAction(groupActionBuilder.build());
281 ActionBuilder actionsBld = new ActionBuilder();
282 actionsBld.setAction(groupActionCaseBuilder.build());
287 * test of {@link GroupConvertor#toGroupModInput(org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.Group, short)}
290 public void testGroupModConvertorBucketwithNOWieghtValuesForGroupTypeAll() {
292 AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
294 addGroupBuilder.setGroupId(new GroupId(10L));
296 addGroupBuilder.setGroupType(GroupTypes.GroupAll);
297 List<Bucket> bucketList = new ArrayList<Bucket>();
298 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>();
299 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>();
302 actionsList.add(assembleActionBuilder("005").build());
304 actionsList.add(assembleActionBuilder("006").build());
306 BucketsBuilder bucketsB = new BucketsBuilder();
308 BucketBuilder bucketB = new BucketBuilder();
310 bucketB.setAction(actionsList);
311 Bucket bucket = bucketB.build();
313 bucketList.add(bucket); // List of bucket
315 BucketBuilder bucketB1 = new BucketBuilder();
318 actionsList1.add(assembleCopyTtlInBuilder().build());
320 actionsList1.add(assembleSetMplsTtlActionBuilder().build());
322 bucketB1.setAction(actionsList);
324 Bucket bucket1 = bucketB1.build(); // second bucket
326 bucketList.add(bucket1);
328 bucketsB.setBucket(bucketList);// List of bucket added to the Buckets
329 Buckets buckets = bucketsB.build();
331 addGroupBuilder.setBuckets(buckets);
333 GroupModInputBuilder outAddGroupInput = GroupConvertor.toGroupModInput(addGroupBuilder.build(), (short) 0X4,BigInteger.valueOf(1));
335 Assert.assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
336 Assert.assertEquals(GroupType.OFPGTALL, outAddGroupInput.getType());
338 Assert.assertEquals(10L, outAddGroupInput.getGroupId().getValue().longValue());
340 List<ActionsList> outActionList = outAddGroupInput.getBucketsList().get(0).getActionsList();
341 for (int outItem = 0; outItem < outActionList.size(); outItem++) {
342 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.actions.list.Action action = outActionList
343 .get(outItem).getAction();
344 if (action instanceof GroupIdAction) {
345 Assert.assertEquals((Long) 5L, ((GroupIdAction) action).getGroupId());
351 List<ActionsList> outActionList1 = outAddGroupInput.getBucketsList().get(1).getActionsList();
352 for (int outItem = 0; outItem < outActionList1.size(); outItem++) {
353 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.actions.list.Action action = outActionList1
354 .get(outItem).getAction();
355 if (action instanceof GroupIdAction) {
357 Assert.assertEquals((Long) 6L, ((GroupIdAction) action).getGroupId());