2 * Copyright (c) 2014 Pantheon Technologies s.r.o. and others. All rights reserved.
\r
4 * This program and the accompanying materials are made available under the
\r
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
\r
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
\r
9 package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action;
\r
11 import java.math.BigInteger;
\r
12 import java.util.ArrayList;
\r
13 import java.util.Collections;
\r
14 import java.util.List;
\r
15 import java.util.Optional;
\r
16 import org.junit.Assert;
\r
17 import org.junit.Test;
\r
18 import org.opendaylight.openflowplugin.api.OFConstants;
\r
19 import org.opendaylight.openflowplugin.extension.api.path.ActionPath;
\r
20 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager;
\r
21 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData;
\r
22 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionResponseConvertorData;
\r
23 import org.opendaylight.openflowplugin.openflow.md.util.OpenflowPortsUtil;
\r
24 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpVersion;
\r
25 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix;
\r
26 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber;
\r
27 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
\r
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.OutputActionCase;
\r
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopVlanActionCaseBuilder;
\r
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetDlDstActionCaseBuilder;
\r
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetDlSrcActionCaseBuilder;
\r
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetFieldCaseBuilder;
\r
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwDstActionCaseBuilder;
\r
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwSrcActionCaseBuilder;
\r
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwTosActionCaseBuilder;
\r
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetTpDstActionCaseBuilder;
\r
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetTpSrcActionCaseBuilder;
\r
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetVlanIdActionCaseBuilder;
\r
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetVlanPcpActionCaseBuilder;
\r
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.StripVlanActionCaseBuilder;
\r
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.dl.dst.action._case.SetDlDstActionBuilder;
\r
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.dl.src.action._case.SetDlSrcActionBuilder;
\r
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.field._case.SetFieldBuilder;
\r
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.dst.action._case.SetNwDstActionBuilder;
\r
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.src.action._case.SetNwSrcActionBuilder;
\r
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.tos.action._case.SetNwTosActionBuilder;
\r
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.tp.dst.action._case.SetTpDstActionBuilder;
\r
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.tp.src.action._case.SetTpSrcActionBuilder;
\r
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.vlan.id.action._case.SetVlanIdActionBuilder;
\r
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.vlan.pcp.action._case.SetVlanPcpActionBuilder;
\r
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.strip.vlan.action._case.StripVlanActionBuilder;
\r
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action;
\r
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
\r
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.address.address.Ipv4Builder;
\r
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow;
\r
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder;
\r
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;
\r
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanId;
\r
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanPcp;
\r
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.IpMatchBuilder;
\r
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.VlanMatchBuilder;
\r
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.vlan.match.fields.VlanIdBuilder;
\r
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.OutputActionCaseBuilder;
\r
64 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetDlDstCase;
\r
65 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetDlSrcCase;
\r
66 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetNwDstCase;
\r
67 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetNwSrcCase;
\r
68 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetNwTosCase;
\r
69 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetTpDstCase;
\r
70 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetTpSrcCase;
\r
71 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetVlanPcpCase;
\r
72 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetVlanVidCase;
\r
73 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.output.action._case.OutputActionBuilder;
\r
76 * @author michal.polkorab
\r
79 public class ActionConvertorV10Test {
\r
82 * Test {@link org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ActionConvertor#convert(java.util.List, org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData)}}
\r
85 public void testGetActions() {
\r
86 List<Action> salActions = new ArrayList<>();
\r
87 ActionBuilder actionBuilder = new ActionBuilder();
\r
88 SetVlanPcpActionCaseBuilder vlanPcpCaseBuilder = new SetVlanPcpActionCaseBuilder();
\r
89 SetVlanPcpActionBuilder pcpBuilder = new SetVlanPcpActionBuilder();
\r
90 pcpBuilder.setVlanPcp(new VlanPcp((short) 7));
\r
91 vlanPcpCaseBuilder.setSetVlanPcpAction(pcpBuilder.build());
\r
92 actionBuilder.setAction(vlanPcpCaseBuilder.build());
\r
93 actionBuilder.setOrder(0);
\r
94 salActions.add(actionBuilder.build());
\r
96 actionBuilder = new ActionBuilder();
\r
97 StripVlanActionCaseBuilder stripCaseBuilder = new StripVlanActionCaseBuilder();
\r
98 StripVlanActionBuilder stripBuilder = new StripVlanActionBuilder();
\r
99 stripCaseBuilder.setStripVlanAction(stripBuilder.build());
\r
100 actionBuilder.setAction(stripCaseBuilder.build());
\r
101 actionBuilder.setOrder(1);
\r
102 salActions.add(actionBuilder.build());
\r
104 actionBuilder = new ActionBuilder();
\r
105 SetDlDstActionCaseBuilder dlDstCaseBuilder = new SetDlDstActionCaseBuilder();
\r
106 SetDlDstActionBuilder dlDstBuilder = new SetDlDstActionBuilder();
\r
107 dlDstBuilder.setAddress(new MacAddress("00:00:00:00:00:06"));
\r
108 dlDstCaseBuilder.setSetDlDstAction(dlDstBuilder.build());
\r
109 actionBuilder.setAction(dlDstCaseBuilder.build());
\r
110 actionBuilder.setOrder(2);
\r
111 salActions.add(actionBuilder.build());
\r
113 actionBuilder = new ActionBuilder();
\r
114 SetDlSrcActionCaseBuilder dlSrcCaseBuilder = new SetDlSrcActionCaseBuilder();
\r
115 SetDlSrcActionBuilder dlSrcBuilder = new SetDlSrcActionBuilder();
\r
116 dlSrcBuilder.setAddress(new MacAddress("00:00:00:00:00:05"));
\r
117 dlSrcCaseBuilder.setSetDlSrcAction(dlSrcBuilder.build());
\r
118 actionBuilder.setAction(dlSrcCaseBuilder.build());
\r
119 actionBuilder.setOrder(3);
\r
120 salActions.add(actionBuilder.build());
\r
122 actionBuilder = new ActionBuilder();
\r
123 SetNwSrcActionCaseBuilder nwSrcCaseBuilder = new SetNwSrcActionCaseBuilder();
\r
124 SetNwSrcActionBuilder nwSrcBuilder = new SetNwSrcActionBuilder();
\r
125 Ipv4Builder ipv4Builder = new Ipv4Builder();
\r
126 /* Use prefix which is correct in canonical representation in test */
\r
127 ipv4Builder.setIpv4Address(new Ipv4Prefix("10.0.0.0/24"));
\r
128 nwSrcBuilder.setAddress(ipv4Builder.build());
\r
129 nwSrcCaseBuilder.setSetNwSrcAction(nwSrcBuilder.build());
\r
130 actionBuilder.setAction(nwSrcCaseBuilder.build());
\r
131 actionBuilder.setOrder(4);
\r
132 salActions.add(actionBuilder.build());
\r
134 actionBuilder = new ActionBuilder();
\r
135 SetNwDstActionCaseBuilder nwDstCaseBuilder = new SetNwDstActionCaseBuilder();
\r
136 SetNwDstActionBuilder nwDstBuilder = new SetNwDstActionBuilder();
\r
137 ipv4Builder = new Ipv4Builder();
\r
138 ipv4Builder.setIpv4Address(new Ipv4Prefix("10.0.0.2/32"));
\r
139 nwDstBuilder.setAddress(ipv4Builder.build());
\r
140 nwDstCaseBuilder.setSetNwDstAction(nwDstBuilder.build());
\r
141 actionBuilder.setAction(nwDstCaseBuilder.build());
\r
142 actionBuilder.setOrder(5);
\r
143 salActions.add(actionBuilder.build());
\r
145 actionBuilder = new ActionBuilder();
\r
146 SetTpSrcActionCaseBuilder tpSrcCaseBuilder = new SetTpSrcActionCaseBuilder();
\r
147 SetTpSrcActionBuilder tpSrcBuilder = new SetTpSrcActionBuilder();
\r
148 tpSrcBuilder.setPort(new PortNumber(54));
\r
149 tpSrcCaseBuilder.setSetTpSrcAction(tpSrcBuilder.build());
\r
150 actionBuilder.setAction(tpSrcCaseBuilder.build());
\r
151 actionBuilder.setOrder(6);
\r
152 salActions.add(actionBuilder.build());
\r
154 actionBuilder = new ActionBuilder();
\r
155 SetTpDstActionCaseBuilder tpDstCaseBuilder = new SetTpDstActionCaseBuilder();
\r
156 SetTpDstActionBuilder tpDstBuilder = new SetTpDstActionBuilder();
\r
157 tpDstBuilder.setPort(new PortNumber(45));
\r
158 tpDstCaseBuilder.setSetTpDstAction(tpDstBuilder.build());
\r
159 actionBuilder.setAction(tpDstCaseBuilder.build());
\r
160 actionBuilder.setOrder(7);
\r
161 salActions.add(actionBuilder.build());
\r
163 actionBuilder = new ActionBuilder();
\r
164 SetNwTosActionCaseBuilder tosCaseBuilder = new SetNwTosActionCaseBuilder();
\r
165 SetNwTosActionBuilder tosBuilder = new SetNwTosActionBuilder();
\r
166 tosBuilder.setTos(18);
\r
167 tosCaseBuilder.setSetNwTosAction(tosBuilder.build());
\r
168 actionBuilder.setAction(tosCaseBuilder.build());
\r
169 actionBuilder.setOrder(8);
\r
170 salActions.add(actionBuilder.build());
\r
172 actionBuilder = new ActionBuilder();
\r
173 SetVlanIdActionCaseBuilder vlanIdCaseBuilder = new SetVlanIdActionCaseBuilder();
\r
174 SetVlanIdActionBuilder vlanIdBuilder = new SetVlanIdActionBuilder();
\r
175 vlanIdBuilder.setVlanId(new VlanId(22));
\r
176 vlanIdCaseBuilder.setSetVlanIdAction(vlanIdBuilder.build());
\r
177 actionBuilder.setAction(vlanIdCaseBuilder.build());
\r
178 actionBuilder.setOrder(9);
\r
179 salActions.add(actionBuilder.build());
\r
181 actionBuilder = new ActionBuilder();
\r
182 PopVlanActionCaseBuilder popVlanActionCaseBuilder = new PopVlanActionCaseBuilder();
\r
183 actionBuilder.setAction(popVlanActionCaseBuilder.build());
\r
184 actionBuilder.setOrder(10);
\r
185 salActions.add(actionBuilder.build());
\r
187 actionBuilder = new ActionBuilder();
\r
188 SetFieldCaseBuilder setFieldCaseBuilder = new SetFieldCaseBuilder();
\r
189 SetFieldBuilder setFieldBuilder = new SetFieldBuilder();
\r
190 VlanMatchBuilder vlanMatchBuilder = new VlanMatchBuilder();
\r
191 vlanMatchBuilder.setVlanId(new VlanIdBuilder().setVlanId(new VlanId(22)).build());
\r
192 setFieldBuilder.setVlanMatch(vlanMatchBuilder.build());
\r
193 setFieldCaseBuilder.setSetField(setFieldBuilder.build());
\r
194 actionBuilder.setAction(setFieldCaseBuilder.build());
\r
195 actionBuilder.setOrder(11);
\r
196 salActions.add(actionBuilder.build());
\r
198 IpMatchBuilder ipMatchBld = new IpMatchBuilder().setIpProto(IpVersion.Ipv4);
\r
199 MatchBuilder matchBld = new MatchBuilder().setIpMatch(ipMatchBld.build());
\r
200 FlowBuilder flowBld = new FlowBuilder().setMatch(matchBld.build());
\r
201 Flow flow = flowBld.build();
\r
203 ActionConvertorData data = new ActionConvertorData(OFConstants.OFP_VERSION_1_0);
\r
204 data.setDatapathId(new BigInteger("42"));
\r
205 if (flow.getMatch() != null && flow.getMatch().getIpMatch() != null) {
\r
206 data.setIpProtocol(flow.getMatch().getIpMatch().getIpProtocol());
\r
209 Optional<List<org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.Action>> actionsOptional =
\r
210 ConvertorManager.getInstance().convert(salActions, data);
\r
212 List<org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.Action> actions = actionsOptional.orElse(Collections.emptyList());
\r
214 Assert.assertEquals("Wrong number of actions", 12, actions.size());
\r
216 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.Action action = actions.get(0);
\r
217 Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common"
\r
218 + ".action.rev150203.action.grouping.action.choice.SetVlanPcpCase", action.getActionChoice().getImplementedInterface().getName());
\r
219 SetVlanPcpCase setVlanPcpCase = (SetVlanPcpCase) action.getActionChoice();
\r
220 Assert.assertEquals("Wrong vlan pcp", 7, setVlanPcpCase.getSetVlanPcpAction().getVlanPcp().intValue());
\r
222 action = actions.get(1);
\r
223 Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common"
\r
224 + ".action.rev150203.action.grouping.action.choice.StripVlanCase", action.getActionChoice().getImplementedInterface().getName());
\r
226 action = actions.get(2);
\r
227 Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common"
\r
228 + ".action.rev150203.action.grouping.action.choice.SetDlDstCase", action.getActionChoice().getImplementedInterface().getName());
\r
229 SetDlDstCase setDlDstCase = (SetDlDstCase) action.getActionChoice();
\r
230 Assert.assertEquals("Wrong dl dst", "00:00:00:00:00:06", setDlDstCase.getSetDlDstAction().getDlDstAddress().getValue());
\r
232 action = actions.get(3);
\r
233 Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common"
\r
234 + ".action.rev150203.action.grouping.action.choice.SetDlSrcCase", action.getActionChoice().getImplementedInterface().getName());
\r
235 SetDlSrcCase setDlSrcCase = (SetDlSrcCase) action.getActionChoice();
\r
236 Assert.assertEquals("Wrong dl src", "00:00:00:00:00:05", setDlSrcCase.getSetDlSrcAction().getDlSrcAddress().getValue());
\r
238 action = actions.get(4);
\r
239 Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common"
\r
240 + ".action.rev150203.action.grouping.action.choice.SetNwSrcCase", action.getActionChoice().getImplementedInterface().getName());
\r
241 SetNwSrcCase setNwSrcCase = (SetNwSrcCase) action.getActionChoice();
\r
242 Assert.assertEquals("Wrong nw src", "10.0.0.0", setNwSrcCase.getSetNwSrcAction().getIpAddress().getValue());
\r
244 action = actions.get(5);
\r
245 Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common"
\r
246 + ".action.rev150203.action.grouping.action.choice.SetNwDstCase", action.getActionChoice().getImplementedInterface().getName());
\r
247 SetNwDstCase setNwDstCase = (SetNwDstCase) action.getActionChoice();
\r
248 Assert.assertEquals("Wrong nw dst", "10.0.0.2", setNwDstCase.getSetNwDstAction().getIpAddress().getValue());
\r
250 action = actions.get(6);
\r
251 Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common"
\r
252 + ".action.rev150203.action.grouping.action.choice.SetTpSrcCase", action.getActionChoice().getImplementedInterface().getName());
\r
253 SetTpSrcCase setTpSrcCase = (SetTpSrcCase) action.getActionChoice();
\r
254 Assert.assertEquals("Wrong tp src", 54, setTpSrcCase.getSetTpSrcAction().getPort().getValue().intValue());
\r
256 action = actions.get(7);
\r
257 Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common"
\r
258 + ".action.rev150203.action.grouping.action.choice.SetTpDstCase", action.getActionChoice().getImplementedInterface().getName());
\r
259 SetTpDstCase setTpDstCase = (SetTpDstCase) action.getActionChoice();
\r
260 Assert.assertEquals("Wrong tp dst", 45, setTpDstCase.getSetTpDstAction().getPort().getValue().intValue());
\r
262 action = actions.get(8);
\r
263 Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common"
\r
264 + ".action.rev150203.action.grouping.action.choice.SetNwTosCase", action.getActionChoice().getImplementedInterface().getName());
\r
265 SetNwTosCase setNwTosCase = (SetNwTosCase) action.getActionChoice();
\r
266 Assert.assertEquals("Wrong nw tos", 18, setNwTosCase.getSetNwTosAction().getNwTos().intValue());
\r
268 action = actions.get(9);
\r
269 Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common"
\r
270 + ".action.rev150203.action.grouping.action.choice.SetVlanVidCase", action.getActionChoice().getImplementedInterface().getName());
\r
271 SetVlanVidCase setVlanVidCase = (SetVlanVidCase) action.getActionChoice();
\r
272 Assert.assertEquals("Wrong vlan id", 22, setVlanVidCase.getSetVlanVidAction().getVlanVid().intValue());
\r
274 action = actions.get(10);
\r
275 Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common"
\r
276 + ".action.rev150203.action.grouping.action.choice.StripVlanCase", action.getActionChoice().getImplementedInterface().getName());
\r
278 action = actions.get(11);
\r
279 Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common"
\r
280 + ".action.rev150203.action.grouping.action.choice.SetVlanVidCase", action.getActionChoice().getImplementedInterface().getName());
\r
281 setVlanVidCase = (SetVlanVidCase) action.getActionChoice();
\r
282 Assert.assertEquals("Wrong vlan id", 22, setVlanVidCase.getSetVlanVidAction().getVlanVid().intValue());
\r
286 * Test {@link org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ActionResponseConvertor#convert(java.util.List, org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionResponseConvertorData)}}
\r
289 public void testToMDSalActions() {
\r
290 OpenflowPortsUtil.init();
\r
292 List<org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.Action> actions = new ArrayList<>();
\r
293 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.ActionBuilder actionbuilder =
\r
294 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.ActionBuilder();
\r
296 OutputActionCaseBuilder caseBuilder = new OutputActionCaseBuilder();
\r
297 OutputActionBuilder outputBuilder = new OutputActionBuilder();
\r
298 outputBuilder.setPort(new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortNumber(14L));
\r
299 outputBuilder.setMaxLength(555);
\r
300 caseBuilder.setOutputAction(outputBuilder.build());
\r
301 actionbuilder.setActionChoice(caseBuilder.build());
\r
302 actions.add(actionbuilder.build());
\r
304 ActionResponseConvertorData data = new ActionResponseConvertorData(OFConstants.OFP_VERSION_1_0);
\r
305 data.setActionPath(ActionPath.FLOWSSTATISTICSUPDATE_FLOWANDSTATISTICSMAPLIST_INSTRUCTIONS_INSTRUCTION_INSTRUCTION_APPLYACTIONSCASE_APPLYACTIONS_ACTION_ACTION);
\r
307 Optional<List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action
\r
308 .Action>> mdSalActionsOptional =
\r
309 ConvertorManager.getInstance().convert(
\r
312 List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action
\r
313 .Action> mdSalActions = mdSalActionsOptional.orElse(Collections.emptyList());
\r
315 Assert.assertEquals("Wrong number of output actions", 1, mdSalActions.size());
\r
316 org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action = mdSalActions.get(0);
\r
317 Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight.action.types"
\r
318 + ".rev131112.action.action.OutputActionCase", action.getImplementedInterface().getName());
\r
319 OutputActionCase outputAction = (OutputActionCase) action;
\r
320 Assert.assertEquals("Wrong output port", "14", outputAction.getOutputAction().getOutputNodeConnector().getValue());
\r
321 Assert.assertEquals("Wrong max length", 555, outputAction.getOutputAction().getMaxLength().intValue());
\r