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.core.sal.convertor.flow.FlowConvertorUtil;
\r
24 import org.opendaylight.openflowplugin.openflow.md.util.OpenflowPortsUtil;
\r
25 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpVersion;
\r
26 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix;
\r
27 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber;
\r
28 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
\r
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.OutputActionCase;
\r
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopVlanActionCaseBuilder;
\r
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetDlDstActionCaseBuilder;
\r
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetDlSrcActionCaseBuilder;
\r
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetFieldCaseBuilder;
\r
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwDstActionCaseBuilder;
\r
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwSrcActionCaseBuilder;
\r
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwTosActionCaseBuilder;
\r
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetTpDstActionCaseBuilder;
\r
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetTpSrcActionCaseBuilder;
\r
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetVlanIdActionCaseBuilder;
\r
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetVlanPcpActionCaseBuilder;
\r
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.StripVlanActionCaseBuilder;
\r
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.dl.dst.action._case.SetDlDstActionBuilder;
\r
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.dl.src.action._case.SetDlSrcActionBuilder;
\r
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.field._case.SetFieldBuilder;
\r
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.dst.action._case.SetNwDstActionBuilder;
\r
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.src.action._case.SetNwSrcActionBuilder;
\r
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.tos.action._case.SetNwTosActionBuilder;
\r
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.tp.dst.action._case.SetTpDstActionBuilder;
\r
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.tp.src.action._case.SetTpSrcActionBuilder;
\r
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.vlan.id.action._case.SetVlanIdActionBuilder;
\r
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.vlan.pcp.action._case.SetVlanPcpActionBuilder;
\r
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.strip.vlan.action._case.StripVlanActionBuilder;
\r
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action;
\r
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
\r
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.address.address.Ipv4Builder;
\r
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow;
\r
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder;
\r
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;
\r
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanId;
\r
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanPcp;
\r
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.IpMatchBuilder;
\r
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.VlanMatchBuilder;
\r
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.vlan.match.fields.VlanIdBuilder;
\r
64 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.OutputActionCaseBuilder;
\r
65 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetDlDstCase;
\r
66 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetDlSrcCase;
\r
67 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetNwDstCase;
\r
68 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetNwSrcCase;
\r
69 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetNwTosCase;
\r
70 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetTpDstCase;
\r
71 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetTpSrcCase;
\r
72 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetVlanPcpCase;
\r
73 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetVlanVidCase;
\r
74 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.output.action._case.OutputActionBuilder;
\r
77 * @author michal.polkorab
\r
80 public class ActionConvertorV10Test {
\r
83 * 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
86 public void testGetActions() {
\r
87 List<Action> salActions = new ArrayList<>();
\r
88 ActionBuilder actionBuilder = new ActionBuilder();
\r
89 SetVlanPcpActionCaseBuilder vlanPcpCaseBuilder = new SetVlanPcpActionCaseBuilder();
\r
90 SetVlanPcpActionBuilder pcpBuilder = new SetVlanPcpActionBuilder();
\r
91 pcpBuilder.setVlanPcp(new VlanPcp((short) 7));
\r
92 vlanPcpCaseBuilder.setSetVlanPcpAction(pcpBuilder.build());
\r
93 actionBuilder.setAction(vlanPcpCaseBuilder.build());
\r
94 actionBuilder.setOrder(0);
\r
95 salActions.add(actionBuilder.build());
\r
97 actionBuilder = new ActionBuilder();
\r
98 StripVlanActionCaseBuilder stripCaseBuilder = new StripVlanActionCaseBuilder();
\r
99 StripVlanActionBuilder stripBuilder = new StripVlanActionBuilder();
\r
100 stripCaseBuilder.setStripVlanAction(stripBuilder.build());
\r
101 actionBuilder.setAction(stripCaseBuilder.build());
\r
102 actionBuilder.setOrder(1);
\r
103 salActions.add(actionBuilder.build());
\r
105 actionBuilder = new ActionBuilder();
\r
106 SetDlDstActionCaseBuilder dlDstCaseBuilder = new SetDlDstActionCaseBuilder();
\r
107 SetDlDstActionBuilder dlDstBuilder = new SetDlDstActionBuilder();
\r
108 dlDstBuilder.setAddress(new MacAddress("00:00:00:00:00:06"));
\r
109 dlDstCaseBuilder.setSetDlDstAction(dlDstBuilder.build());
\r
110 actionBuilder.setAction(dlDstCaseBuilder.build());
\r
111 actionBuilder.setOrder(2);
\r
112 salActions.add(actionBuilder.build());
\r
114 actionBuilder = new ActionBuilder();
\r
115 SetDlSrcActionCaseBuilder dlSrcCaseBuilder = new SetDlSrcActionCaseBuilder();
\r
116 SetDlSrcActionBuilder dlSrcBuilder = new SetDlSrcActionBuilder();
\r
117 dlSrcBuilder.setAddress(new MacAddress("00:00:00:00:00:05"));
\r
118 dlSrcCaseBuilder.setSetDlSrcAction(dlSrcBuilder.build());
\r
119 actionBuilder.setAction(dlSrcCaseBuilder.build());
\r
120 actionBuilder.setOrder(3);
\r
121 salActions.add(actionBuilder.build());
\r
123 actionBuilder = new ActionBuilder();
\r
124 SetNwSrcActionCaseBuilder nwSrcCaseBuilder = new SetNwSrcActionCaseBuilder();
\r
125 SetNwSrcActionBuilder nwSrcBuilder = new SetNwSrcActionBuilder();
\r
126 Ipv4Builder ipv4Builder = new Ipv4Builder();
\r
127 /* Use prefix which is correct in canonical representation in test */
\r
128 ipv4Builder.setIpv4Address(new Ipv4Prefix("10.0.0.0/24"));
\r
129 nwSrcBuilder.setAddress(ipv4Builder.build());
\r
130 nwSrcCaseBuilder.setSetNwSrcAction(nwSrcBuilder.build());
\r
131 actionBuilder.setAction(nwSrcCaseBuilder.build());
\r
132 actionBuilder.setOrder(4);
\r
133 salActions.add(actionBuilder.build());
\r
135 actionBuilder = new ActionBuilder();
\r
136 SetNwDstActionCaseBuilder nwDstCaseBuilder = new SetNwDstActionCaseBuilder();
\r
137 SetNwDstActionBuilder nwDstBuilder = new SetNwDstActionBuilder();
\r
138 ipv4Builder = new Ipv4Builder();
\r
139 ipv4Builder.setIpv4Address(new Ipv4Prefix("10.0.0.2/32"));
\r
140 nwDstBuilder.setAddress(ipv4Builder.build());
\r
141 nwDstCaseBuilder.setSetNwDstAction(nwDstBuilder.build());
\r
142 actionBuilder.setAction(nwDstCaseBuilder.build());
\r
143 actionBuilder.setOrder(5);
\r
144 salActions.add(actionBuilder.build());
\r
146 actionBuilder = new ActionBuilder();
\r
147 SetTpSrcActionCaseBuilder tpSrcCaseBuilder = new SetTpSrcActionCaseBuilder();
\r
148 SetTpSrcActionBuilder tpSrcBuilder = new SetTpSrcActionBuilder();
\r
149 tpSrcBuilder.setPort(new PortNumber(54));
\r
150 tpSrcCaseBuilder.setSetTpSrcAction(tpSrcBuilder.build());
\r
151 actionBuilder.setAction(tpSrcCaseBuilder.build());
\r
152 actionBuilder.setOrder(6);
\r
153 salActions.add(actionBuilder.build());
\r
155 actionBuilder = new ActionBuilder();
\r
156 SetTpDstActionCaseBuilder tpDstCaseBuilder = new SetTpDstActionCaseBuilder();
\r
157 SetTpDstActionBuilder tpDstBuilder = new SetTpDstActionBuilder();
\r
158 tpDstBuilder.setPort(new PortNumber(45));
\r
159 tpDstCaseBuilder.setSetTpDstAction(tpDstBuilder.build());
\r
160 actionBuilder.setAction(tpDstCaseBuilder.build());
\r
161 actionBuilder.setOrder(7);
\r
162 salActions.add(actionBuilder.build());
\r
164 actionBuilder = new ActionBuilder();
\r
165 SetNwTosActionCaseBuilder tosCaseBuilder = new SetNwTosActionCaseBuilder();
\r
166 SetNwTosActionBuilder tosBuilder = new SetNwTosActionBuilder();
\r
167 tosBuilder.setTos(18);
\r
168 tosCaseBuilder.setSetNwTosAction(tosBuilder.build());
\r
169 actionBuilder.setAction(tosCaseBuilder.build());
\r
170 actionBuilder.setOrder(8);
\r
171 salActions.add(actionBuilder.build());
\r
173 actionBuilder = new ActionBuilder();
\r
174 SetVlanIdActionCaseBuilder vlanIdCaseBuilder = new SetVlanIdActionCaseBuilder();
\r
175 SetVlanIdActionBuilder vlanIdBuilder = new SetVlanIdActionBuilder();
\r
176 vlanIdBuilder.setVlanId(new VlanId(22));
\r
177 vlanIdCaseBuilder.setSetVlanIdAction(vlanIdBuilder.build());
\r
178 actionBuilder.setAction(vlanIdCaseBuilder.build());
\r
179 actionBuilder.setOrder(9);
\r
180 salActions.add(actionBuilder.build());
\r
182 actionBuilder = new ActionBuilder();
\r
183 PopVlanActionCaseBuilder popVlanActionCaseBuilder = new PopVlanActionCaseBuilder();
\r
184 actionBuilder.setAction(popVlanActionCaseBuilder.build());
\r
185 actionBuilder.setOrder(10);
\r
186 salActions.add(actionBuilder.build());
\r
188 actionBuilder = new ActionBuilder();
\r
189 SetFieldCaseBuilder setFieldCaseBuilder = new SetFieldCaseBuilder();
\r
190 SetFieldBuilder setFieldBuilder = new SetFieldBuilder();
\r
191 VlanMatchBuilder vlanMatchBuilder = new VlanMatchBuilder();
\r
192 vlanMatchBuilder.setVlanId(new VlanIdBuilder().setVlanId(new VlanId(22)).build());
\r
193 setFieldBuilder.setVlanMatch(vlanMatchBuilder.build());
\r
194 setFieldCaseBuilder.setSetField(setFieldBuilder.build());
\r
195 actionBuilder.setAction(setFieldCaseBuilder.build());
\r
196 actionBuilder.setOrder(11);
\r
197 salActions.add(actionBuilder.build());
\r
199 IpMatchBuilder ipMatchBld = new IpMatchBuilder().setIpProto(IpVersion.Ipv4);
\r
200 MatchBuilder matchBld = new MatchBuilder().setIpMatch(ipMatchBld.build());
\r
201 FlowBuilder flowBld = new FlowBuilder().setMatch(matchBld.build());
\r
202 Flow flow = flowBld.build();
\r
204 ActionConvertorData data = new ActionConvertorData(OFConstants.OFP_VERSION_1_0);
\r
205 data.setDatapathId(new BigInteger("42"));
\r
206 data.setIpProtocol(FlowConvertorUtil.getIpProtocolFromFlow(flow));
\r
208 Optional<List<org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.Action>> actionsOptional =
\r
209 ConvertorManager.getInstance().convert(salActions, data);
\r
211 List<org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.Action> actions = actionsOptional.orElse(Collections.emptyList());
\r
213 Assert.assertEquals("Wrong number of actions", 12, actions.size());
\r
215 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.Action action = actions.get(0);
\r
216 Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common"
\r
217 + ".action.rev150203.action.grouping.action.choice.SetVlanPcpCase", action.getActionChoice().getImplementedInterface().getName());
\r
218 SetVlanPcpCase setVlanPcpCase = (SetVlanPcpCase) action.getActionChoice();
\r
219 Assert.assertEquals("Wrong vlan pcp", 7, setVlanPcpCase.getSetVlanPcpAction().getVlanPcp().intValue());
\r
221 action = actions.get(1);
\r
222 Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common"
\r
223 + ".action.rev150203.action.grouping.action.choice.StripVlanCase", action.getActionChoice().getImplementedInterface().getName());
\r
225 action = actions.get(2);
\r
226 Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common"
\r
227 + ".action.rev150203.action.grouping.action.choice.SetDlDstCase", action.getActionChoice().getImplementedInterface().getName());
\r
228 SetDlDstCase setDlDstCase = (SetDlDstCase) action.getActionChoice();
\r
229 Assert.assertEquals("Wrong dl dst", "00:00:00:00:00:06", setDlDstCase.getSetDlDstAction().getDlDstAddress().getValue());
\r
231 action = actions.get(3);
\r
232 Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common"
\r
233 + ".action.rev150203.action.grouping.action.choice.SetDlSrcCase", action.getActionChoice().getImplementedInterface().getName());
\r
234 SetDlSrcCase setDlSrcCase = (SetDlSrcCase) action.getActionChoice();
\r
235 Assert.assertEquals("Wrong dl src", "00:00:00:00:00:05", setDlSrcCase.getSetDlSrcAction().getDlSrcAddress().getValue());
\r
237 action = actions.get(4);
\r
238 Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common"
\r
239 + ".action.rev150203.action.grouping.action.choice.SetNwSrcCase", action.getActionChoice().getImplementedInterface().getName());
\r
240 SetNwSrcCase setNwSrcCase = (SetNwSrcCase) action.getActionChoice();
\r
241 Assert.assertEquals("Wrong nw src", "10.0.0.0", setNwSrcCase.getSetNwSrcAction().getIpAddress().getValue());
\r
243 action = actions.get(5);
\r
244 Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common"
\r
245 + ".action.rev150203.action.grouping.action.choice.SetNwDstCase", action.getActionChoice().getImplementedInterface().getName());
\r
246 SetNwDstCase setNwDstCase = (SetNwDstCase) action.getActionChoice();
\r
247 Assert.assertEquals("Wrong nw dst", "10.0.0.2", setNwDstCase.getSetNwDstAction().getIpAddress().getValue());
\r
249 action = actions.get(6);
\r
250 Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common"
\r
251 + ".action.rev150203.action.grouping.action.choice.SetTpSrcCase", action.getActionChoice().getImplementedInterface().getName());
\r
252 SetTpSrcCase setTpSrcCase = (SetTpSrcCase) action.getActionChoice();
\r
253 Assert.assertEquals("Wrong tp src", 54, setTpSrcCase.getSetTpSrcAction().getPort().getValue().intValue());
\r
255 action = actions.get(7);
\r
256 Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common"
\r
257 + ".action.rev150203.action.grouping.action.choice.SetTpDstCase", action.getActionChoice().getImplementedInterface().getName());
\r
258 SetTpDstCase setTpDstCase = (SetTpDstCase) action.getActionChoice();
\r
259 Assert.assertEquals("Wrong tp dst", 45, setTpDstCase.getSetTpDstAction().getPort().getValue().intValue());
\r
261 action = actions.get(8);
\r
262 Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common"
\r
263 + ".action.rev150203.action.grouping.action.choice.SetNwTosCase", action.getActionChoice().getImplementedInterface().getName());
\r
264 SetNwTosCase setNwTosCase = (SetNwTosCase) action.getActionChoice();
\r
265 Assert.assertEquals("Wrong nw tos", 18, setNwTosCase.getSetNwTosAction().getNwTos().intValue());
\r
267 action = actions.get(9);
\r
268 Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common"
\r
269 + ".action.rev150203.action.grouping.action.choice.SetVlanVidCase", action.getActionChoice().getImplementedInterface().getName());
\r
270 SetVlanVidCase setVlanVidCase = (SetVlanVidCase) action.getActionChoice();
\r
271 Assert.assertEquals("Wrong vlan id", 22, setVlanVidCase.getSetVlanVidAction().getVlanVid().intValue());
\r
273 action = actions.get(10);
\r
274 Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common"
\r
275 + ".action.rev150203.action.grouping.action.choice.StripVlanCase", action.getActionChoice().getImplementedInterface().getName());
\r
277 action = actions.get(11);
\r
278 Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common"
\r
279 + ".action.rev150203.action.grouping.action.choice.SetVlanVidCase", action.getActionChoice().getImplementedInterface().getName());
\r
280 setVlanVidCase = (SetVlanVidCase) action.getActionChoice();
\r
281 Assert.assertEquals("Wrong vlan id", 22, setVlanVidCase.getSetVlanVidAction().getVlanVid().intValue());
\r
285 * 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
288 public void testToMDSalActions() {
\r
289 OpenflowPortsUtil.init();
\r
291 List<org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.Action> actions = new ArrayList<>();
\r
292 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.ActionBuilder actionbuilder =
\r
293 new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.ActionBuilder();
\r
295 OutputActionCaseBuilder caseBuilder = new OutputActionCaseBuilder();
\r
296 OutputActionBuilder outputBuilder = new OutputActionBuilder();
\r
297 outputBuilder.setPort(new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortNumber(14L));
\r
298 outputBuilder.setMaxLength(555);
\r
299 caseBuilder.setOutputAction(outputBuilder.build());
\r
300 actionbuilder.setActionChoice(caseBuilder.build());
\r
301 actions.add(actionbuilder.build());
\r
303 ActionResponseConvertorData data = new ActionResponseConvertorData(OFConstants.OFP_VERSION_1_0);
\r
304 data.setActionPath(ActionPath.FLOWSSTATISTICSUPDATE_FLOWANDSTATISTICSMAPLIST_INSTRUCTIONS_INSTRUCTION_INSTRUCTION_APPLYACTIONSCASE_APPLYACTIONS_ACTION_ACTION);
\r
306 Optional<List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action
\r
307 .Action>> mdSalActionsOptional =
\r
308 ConvertorManager.getInstance().convert(
\r
311 List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action
\r
312 .Action> mdSalActions = mdSalActionsOptional.orElse(Collections.emptyList());
\r
314 Assert.assertEquals("Wrong number of output actions", 1, mdSalActions.size());
\r
315 org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action = mdSalActions.get(0);
\r
316 Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight.action.types"
\r
317 + ".rev131112.action.action.OutputActionCase", action.getImplementedInterface().getName());
\r
318 OutputActionCase outputAction = (OutputActionCase) action;
\r
319 Assert.assertEquals("Wrong output port", "14", outputAction.getOutputAction().getOutputNodeConnector().getValue());
\r
320 Assert.assertEquals("Wrong max length", 555, outputAction.getOutputAction().getMaxLength().intValue());
\r