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 package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor;
10 import com.google.common.collect.ImmutableList;
11 import java.math.BigInteger;
12 import java.util.ArrayList;
13 import java.util.List;
14 import java.util.Optional;
15 import org.junit.Assert;
16 import org.junit.Before;
17 import org.junit.Test;
18 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData;
19 import org.opendaylight.openflowplugin.openflow.md.util.OpenflowPortsUtil;
20 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlInCaseBuilder;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.GroupActionCase;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.GroupActionCaseBuilder;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.OutputActionCaseBuilder;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetMplsTtlActionCaseBuilder;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.in._case.CopyTtlIn;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.in._case.CopyTtlInBuilder;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.group.action._case.GroupAction;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.group.action._case.GroupActionBuilder;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.output.action._case.OutputActionBuilder;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.mpls.ttl.action._case.SetMplsTtlAction;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.mpls.ttl.action._case.SetMplsTtlActionBuilder;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.AddGroupInput;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.AddGroupInputBuilder;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.BucketId;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.Group;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupId;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupTypes;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.Buckets;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.BucketsBuilder;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.Bucket;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.BucketBuilder;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.Action;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.GroupModCommand;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.GroupType;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GroupModInputBuilder;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.buckets.grouping.BucketsList;
50 public class GroupConvertorTest {
51 private ConvertorManager convertorManager;
55 convertorManager = ConvertorManagerFactory.createDefaultManager();
59 * test of {@link GroupConvertor#convert(org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.Group, org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData)} }
62 public void testGroupModConvertorwithallParameters() {
64 final AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
66 addGroupBuilder.setGroupId(new GroupId(10L));
68 addGroupBuilder.setGroupType(GroupTypes.GroupAll);
69 final List<Bucket> bucketList = new ArrayList<Bucket>();
70 final 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>();
71 final 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>();
76 final GroupActionBuilder groupActionBuilder = new GroupActionBuilder();
77 groupActionBuilder.setGroup("005");
78 final GroupAction groupIdaction = groupActionBuilder.build();
79 final ActionBuilder actionsB = new ActionBuilder();
80 actionsB.setOrder(actionOrder++).setAction(new GroupActionCaseBuilder().setGroupAction(groupIdaction).build());
83 final GroupActionBuilder groupActionBuilder1 = new GroupActionBuilder();
84 groupActionBuilder1.setGroup("006");
85 final GroupAction groupIdaction1 = groupActionBuilder.build();
86 final ActionBuilder actionsB1 = new ActionBuilder();
87 actionsB1.setOrder(actionOrder++).setAction(new GroupActionCaseBuilder().setGroupAction(groupIdaction1).build());
89 actionsList.add(actionsB.build());
90 actionsList.add(actionsB1.build());
93 final BucketsBuilder bucketsB = new BucketsBuilder();
95 final BucketBuilder bucketB = new BucketBuilder();
96 bucketB.setWeight(10);
97 bucketB.setWatchPort(20L);
98 bucketB.setWatchGroup(22L);
100 bucketB.setAction(actionsList);
101 final Bucket bucket = bucketB.build();
103 bucketList.add(bucket); // List of bucket
105 final BucketBuilder bucketB1 = new BucketBuilder();
106 bucketB1.setWeight(50);
107 bucketB1.setWatchPort(60L);
108 bucketB1.setWatchGroup(70L);
111 final CopyTtlInBuilder copyTtlB = new CopyTtlInBuilder();
112 final CopyTtlIn copyTtl = copyTtlB.build();
113 final ActionBuilder actionsB2 = new ActionBuilder();
114 actionsB2.setOrder(actionOrder++).setAction(new CopyTtlInCaseBuilder().setCopyTtlIn(copyTtl).build());
117 final SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder();
118 setMplsTtlActionBuilder.setMplsTtl((short) 0X1);
119 final SetMplsTtlAction setMAction = setMplsTtlActionBuilder.build();
120 final ActionBuilder actionsB3 = new ActionBuilder();
122 actionsB3.setOrder(actionOrder++).setAction(new SetMplsTtlActionCaseBuilder().setSetMplsTtlAction(setMAction).build());
125 actionsList1.add(actionsB2.build());
126 actionsList1.add(actionsB3.build());
128 bucketB1.setAction(actionsList);
130 final Bucket bucket1 = bucketB1.build(); // second bucket
132 bucketList.add(bucket1);
134 bucketsB.setBucket(bucketList);// List of bucket added to the Buckets
135 final Buckets buckets = bucketsB.build();
137 addGroupBuilder.setBuckets(buckets);
139 VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData((short) 0X4);
140 data.setDatapathId(BigInteger.valueOf(1));
142 final GroupModInputBuilder outAddGroupInput = convert(addGroupBuilder.build(), data);
144 Assert.assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
145 Assert.assertEquals(GroupType.OFPGTALL, outAddGroupInput.getType());
147 Assert.assertEquals(10L, (long) outAddGroupInput.getGroupId().getValue());
148 Assert.assertEquals(10, (int) outAddGroupInput.getBucketsList().get(0).getWeight());
149 Assert.assertEquals(20L, (long) outAddGroupInput.getBucketsList().get(0).getWatchPort().getValue());
150 Assert.assertEquals((Long) 22L, outAddGroupInput.getBucketsList().get(0).getWatchGroup());
152 final List<Action> outActionList = outAddGroupInput.getBucketsList().get(0).getAction();
153 for (int outItem = 0; outItem < outActionList.size(); outItem++) {
154 final Action action = outActionList
156 if (action.getActionChoice() instanceof GroupActionCase) {
157 Assert.assertEquals((Long) 5L, ((GroupActionCase) action.getActionChoice()).getGroupAction().getGroupId());
160 // TODO:setMplsTTL :OF layer doesnt have get();
163 Assert.assertEquals((Integer) 50, outAddGroupInput.getBucketsList().get(1).getWeight());
164 Assert.assertEquals((long) 60, (long) outAddGroupInput.getBucketsList().get(1).getWatchPort().getValue());
165 Assert.assertEquals((Long) 70L, outAddGroupInput.getBucketsList().get(1).getWatchGroup());
166 final List<Action> outActionList1 = outAddGroupInput.getBucketsList().get(1).getAction();
167 for (int outItem = 0; outItem < outActionList1.size(); outItem++) {
168 final Action action = outActionList1
170 if (action.getActionChoice() instanceof GroupActionCase) {
172 Assert.assertEquals((Long) 6L, ((GroupActionCase) action.getActionChoice()).getGroupAction().getGroupId());
176 // TODO:setMplsTTL :OF layer doesnt have get();
182 * test of {@link GroupConvertor#convert(org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.Group, org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData)} }
185 public void testGroupModConvertorNoBucket() {
186 final AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
188 addGroupBuilder.setGroupId(new GroupId(10L));
190 addGroupBuilder.setGroupType(GroupTypes.GroupAll);
192 VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData((short) 0X4);
193 data.setDatapathId(BigInteger.valueOf(1));
195 final GroupModInputBuilder outAddGroupInput = convert(addGroupBuilder.build(), data);
196 Assert.assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
197 Assert.assertEquals(GroupType.OFPGTALL, outAddGroupInput.getType());
201 * test of {@link GroupConvertor#convert(org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.Group, org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData)} }
204 public void testGroupModConvertorBucketwithNOWieghtValuesForGroupTypeFastFailure() {
208 final AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
210 addGroupBuilder.setGroupId(new GroupId(10L));
212 addGroupBuilder.setGroupType(GroupTypes.GroupFf);
213 final List<Bucket> bucketList = new ArrayList<Bucket>();
214 final 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>();
215 final 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>();
218 actionsList.add(assembleActionBuilder("005", actionOrder++).build());
220 actionsList.add(assembleActionBuilder("006", actionOrder++).build());
221 // .. and mr.Bond is not coming today
223 final BucketsBuilder bucketsB = new BucketsBuilder();
225 final BucketBuilder bucketB = new BucketBuilder();
227 bucketB.setAction(actionsList);
228 final Bucket bucket = bucketB.build();
230 bucketList.add(bucket); // List of bucket
233 final BucketBuilder bucketB1 = new BucketBuilder();
236 actionsList1.add(assembleCopyTtlInBuilder(actionOrder++).build());
238 actionsList1.add(assembleSetMplsTtlActionBuilder(actionOrder++).build());
240 bucketB1.setAction(actionsList1);
242 final Bucket bucket1 = bucketB1.build(); // second bucket
244 bucketList.add(bucket1);
246 bucketsB.setBucket(bucketList);// List of bucket added to the Buckets
247 final Buckets buckets = bucketsB.build();
249 addGroupBuilder.setBuckets(buckets);
251 VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData((short) 0X4);
252 data.setDatapathId(BigInteger.valueOf(1));
254 final GroupModInputBuilder outAddGroupInput = convert(addGroupBuilder.build(), data);
256 Assert.assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
257 Assert.assertEquals(GroupType.OFPGTFF, outAddGroupInput.getType());
259 Assert.assertEquals(10L, outAddGroupInput.getGroupId().getValue().longValue());
261 final List<Action> outActionList = outAddGroupInput.getBucketsList().get(0).getAction();
262 for (int outItem = 0; outItem < outActionList.size(); outItem++) {
263 final Action action = outActionList
265 if (action.getActionChoice() instanceof GroupActionCase) {
266 Assert.assertEquals((Long) 5L, ((GroupActionCase) action.getActionChoice()).getGroupAction().getGroupId());
270 final List<Action> outActionList1 = outAddGroupInput.getBucketsList().get(1).getAction();
271 for (int outItem = 0; outItem < outActionList1.size(); outItem++) {
272 final Action action = outActionList1
274 if (action.getActionChoice() instanceof GroupActionCase) {
275 Assert.assertEquals((Long) 6L, ((GroupActionCase) action.getActionChoice()).getGroupAction().getGroupId());
281 * test of {@link GroupConvertor#convert(org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.Group, org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData)} }
284 public void testGroupModConvertSortedBuckets() {
286 final int actionOrder = 0;
288 final ArrayList<Bucket> bucket = new ArrayList<Bucket>();
290 bucket.add(new BucketBuilder()
291 .setBucketId(new BucketId((long) 4))
292 .setWatchPort((long)2)
293 .setWatchGroup((long) 1)
294 .setAction(ImmutableList.of(new ActionBuilder()
296 .setAction(new OutputActionCaseBuilder()
297 .setOutputAction(new OutputActionBuilder()
298 .setOutputNodeConnector(new Uri("openflow:1:2"))
304 bucket.add(new BucketBuilder()
305 .setBucketId(new BucketId((long) 3))
306 .setWatchPort((long)6)
307 .setWatchGroup((long) 1)
308 .setAction(ImmutableList.of(new ActionBuilder()
310 .setAction(new OutputActionCaseBuilder()
311 .setOutputAction(new OutputActionBuilder()
312 .setOutputNodeConnector(new Uri("openflow:1:6"))
318 bucket.add(new BucketBuilder()
319 .setBucketId(new BucketId((long) 2))
320 .setWatchPort((long)5)
321 .setWatchGroup((long) 1)
322 .setAction(ImmutableList.of(new ActionBuilder()
324 .setAction(new OutputActionCaseBuilder()
325 .setOutputAction(new OutputActionBuilder()
326 .setOutputNodeConnector(new Uri("openflow:1:5"))
332 bucket.add(new BucketBuilder()
333 .setBucketId(new BucketId((long) 1))
334 .setWatchPort((long)4)
335 .setWatchGroup((long) 1)
336 .setAction(ImmutableList.of(new ActionBuilder()
338 .setAction(new OutputActionCaseBuilder()
339 .setOutputAction(new OutputActionBuilder()
340 .setOutputNodeConnector(new Uri("openflow:1:4"))
346 bucket.add(new BucketBuilder()
347 .setBucketId(new BucketId((long) 0))
348 .setWatchPort((long)3)
349 .setWatchGroup((long) 1)
350 .setAction(ImmutableList.of(new ActionBuilder()
352 .setAction(new OutputActionCaseBuilder()
353 .setOutputAction(new OutputActionBuilder()
354 .setOutputNodeConnector(new Uri("openflow:1:3"))
361 final AddGroupInput input = new AddGroupInputBuilder()
362 .setGroupId(new GroupId((long) 1))
364 .setGroupType(GroupTypes.GroupFf)
365 .setBuckets(new BucketsBuilder()
370 OpenflowPortsUtil.init();
372 VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData((short) 0X4);
373 data.setDatapathId(BigInteger.valueOf(1));
375 final GroupModInputBuilder outAddGroupInput = convert(input, data);
377 final List<BucketsList> bucketList = outAddGroupInput.getBucketsList();
378 Assert.assertEquals( Long.valueOf(1), bucketList.get(0).getWatchGroup());
379 Assert.assertEquals( Long.valueOf(3), bucketList.get(0).getWatchPort().getValue());
381 Assert.assertEquals( Long.valueOf(1), bucketList.get(1).getWatchGroup());
382 Assert.assertEquals( Long.valueOf(4), bucketList.get(1).getWatchPort().getValue());
384 Assert.assertEquals( Long.valueOf(1), bucketList.get(2).getWatchGroup());
385 Assert.assertEquals( Long.valueOf(5), bucketList.get(2).getWatchPort().getValue());
387 Assert.assertEquals( Long.valueOf(1), bucketList.get(3).getWatchGroup());
388 Assert.assertEquals( Long.valueOf(6), bucketList.get(3).getWatchPort().getValue());
390 Assert.assertEquals( Long.valueOf(1), bucketList.get(4).getWatchGroup());
391 Assert.assertEquals( Long.valueOf(2), bucketList.get(4).getWatchPort().getValue());
399 private static ActionBuilder assembleSetMplsTtlActionBuilder(final int actionOrder) {
400 final SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder();
401 setMplsTtlActionBuilder.setMplsTtl((short) 0X1);
402 final SetMplsTtlActionCaseBuilder setMplsTtlActionCaseBuilder = new SetMplsTtlActionCaseBuilder();
403 setMplsTtlActionCaseBuilder.setSetMplsTtlAction(setMplsTtlActionBuilder.build());
404 final ActionBuilder actionsB3 = new ActionBuilder();
405 actionsB3.setOrder(actionOrder).setAction(setMplsTtlActionCaseBuilder.build());
412 private static ActionBuilder assembleCopyTtlInBuilder(final int actionOrder) {
413 final CopyTtlInBuilder copyTtlB = new CopyTtlInBuilder();
414 final CopyTtlInCaseBuilder copyTtlInCaseBuilder = new CopyTtlInCaseBuilder();
415 copyTtlInCaseBuilder.setCopyTtlIn(copyTtlB.build());
416 final ActionBuilder actionsB2 = new ActionBuilder();
417 actionsB2.setOrder(actionOrder).setAction(copyTtlInCaseBuilder.build());
422 * @param groupName name of group
425 private static ActionBuilder assembleActionBuilder(final String groupName, final int actionOrder) {
426 final GroupActionBuilder groupActionBuilder = new GroupActionBuilder();
427 groupActionBuilder.setGroup(groupName);
428 final GroupActionCaseBuilder groupActionCaseBuilder = new GroupActionCaseBuilder();
429 groupActionCaseBuilder.setGroupAction(groupActionBuilder.build());
430 final ActionBuilder actionsBld = new ActionBuilder();
431 actionsBld.setOrder(actionOrder).setAction(groupActionCaseBuilder.build());
436 * test of {@link GroupConvertor#convert(org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.Group, org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData)} }
439 public void testGroupModConvertorBucketwithNOWieghtValuesForGroupTypeAll() {
443 final AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
445 addGroupBuilder.setGroupId(new GroupId(10L));
447 addGroupBuilder.setGroupType(GroupTypes.GroupAll);
448 final List<Bucket> bucketList = new ArrayList<Bucket>();
449 final 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>();
450 final 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>();
453 actionsList.add(assembleActionBuilder("005", actionOrder++).build());
455 actionsList.add(assembleActionBuilder("006", actionOrder++).build());
457 final BucketsBuilder bucketsB = new BucketsBuilder();
459 final BucketBuilder bucketB = new BucketBuilder();
461 bucketB.setAction(actionsList);
462 final Bucket bucket = bucketB.build();
464 bucketList.add(bucket); // List of bucket
466 final BucketBuilder bucketB1 = new BucketBuilder();
469 actionsList1.add(assembleCopyTtlInBuilder(actionOrder++).build());
471 actionsList1.add(assembleSetMplsTtlActionBuilder(actionOrder++).build());
473 bucketB1.setAction(actionsList);
475 final Bucket bucket1 = bucketB1.build(); // second bucket
477 bucketList.add(bucket1);
479 bucketsB.setBucket(bucketList);// List of bucket added to the Buckets
480 final Buckets buckets = bucketsB.build();
482 addGroupBuilder.setBuckets(buckets);
484 VersionDatapathIdConvertorData data = new VersionDatapathIdConvertorData((short) 0X4);
485 data.setDatapathId(BigInteger.valueOf(1));
487 final GroupModInputBuilder outAddGroupInput = convert(addGroupBuilder.build(), data);
489 Assert.assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
490 Assert.assertEquals(GroupType.OFPGTALL, outAddGroupInput.getType());
492 Assert.assertEquals(10L, outAddGroupInput.getGroupId().getValue().longValue());
494 final List<Action> outActionList = outAddGroupInput.getBucketsList().get(0).getAction();
495 for (int outItem = 0; outItem < outActionList.size(); outItem++) {
496 final Action action = outActionList
498 if (action.getActionChoice() instanceof GroupActionCase) {
499 Assert.assertEquals((Long) 5L, ((GroupActionCase) action.getActionChoice()).getGroupAction().getGroupId());
505 final List<Action> outActionList1 = outAddGroupInput.getBucketsList().get(1).getAction();
506 for (int outItem = 0; outItem < outActionList1.size(); outItem++) {
507 final Action action = outActionList1
509 if (action.getActionChoice() instanceof GroupActionCase) {
511 Assert.assertEquals((Long) 6L, ((GroupActionCase) action.getActionChoice()).getGroupAction().getGroupId());
519 private GroupModInputBuilder convert(Group group, VersionDatapathIdConvertorData data) {
520 final Optional<GroupModInputBuilder> outAddGroupInputOptional = convertorManager.convert(group, data);
521 Assert.assertTrue("Group convertor not found", outAddGroupInputOptional.isPresent());
522 return outAddGroupInputOptional.get();