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 * Contributor: usha.m.s@ericsson.com
10 package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor;
12 import org.junit.Assert;
13 import org.junit.Before;
14 import org.junit.Test;
15 import org.opendaylight.openflowplugin.openflow.md.util.OpenflowPortsUtil;
16 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix;
17 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv6Prefix;
18 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlInCaseBuilder;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlOutCaseBuilder;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DecMplsTtlCaseBuilder;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DecNwTtlCaseBuilder;
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.PopMplsActionCaseBuilder;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopPbbActionCaseBuilder;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopVlanActionCaseBuilder;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushMplsActionCaseBuilder;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushPbbActionCaseBuilder;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushVlanActionCaseBuilder;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetFieldCaseBuilder;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetMplsTtlActionCaseBuilder;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwDstActionCase;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwDstActionCaseBuilder;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwSrcActionCase;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwSrcActionCaseBuilder;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwTtlActionCaseBuilder;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetQueueActionCaseBuilder;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.in._case.CopyTtlInBuilder;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.out._case.CopyTtlOutBuilder;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.dec.mpls.ttl._case.DecMplsTtlBuilder;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.dec.nw.ttl._case.DecNwTtlBuilder;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.group.action._case.GroupActionBuilder;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.output.action._case.OutputActionBuilder;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.mpls.action._case.PopMplsActionBuilder;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.pbb.action._case.PopPbbActionBuilder;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.vlan.action._case.PopVlanActionBuilder;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.mpls.action._case.PushMplsActionBuilder;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.pbb.action._case.PushPbbActionBuilder;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.vlan.action._case.PushVlanActionBuilder;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.field._case.SetFieldBuilder;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.mpls.ttl.action._case.SetMplsTtlActionBuilder;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.dst.action._case.SetNwDstAction;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.dst.action._case.SetNwDstActionBuilder;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.src.action._case.SetNwSrcAction;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.src.action._case.SetNwSrcActionBuilder;
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.ttl.action._case.SetNwTtlActionBuilder;
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.queue.action._case.SetQueueActionBuilder;
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action;
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.address.Address;
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.address.address.Ipv4Builder;
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.address.address.Ipv6Builder;
64 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.OutputPortValues;
65 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
66 import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanId;
67 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.EthertypeAction;
68 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.EthertypeActionBuilder;
69 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.GroupIdAction;
70 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.IpAddressAction;
71 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.Ipv4AddressMatchEntry;
72 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.Ipv6AddressMatchEntry;
73 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.MaxLengthAction;
74 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.OxmFieldsAction;
75 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.CopyTtlIn;
76 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.CopyTtlOut;
77 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.DecNwTtl;
78 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.Output;
79 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.PopMpls;
80 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.PopVlan;
81 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.PushMpls;
82 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.PushPbb;
83 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.PushVlan;
84 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.SetField;
85 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.SetMplsTtl;
86 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.SetNwDst;
87 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.SetNwSrc;
88 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.SetNwTtl;
89 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.SetQueue;
90 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.EtherType;
91 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Ipv4Dst;
92 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Ipv4Src;
93 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Ipv6Dst;
94 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Ipv6Src;
95 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.oxm.fields.grouping.MatchEntries;
97 import java.math.BigInteger;
98 import java.util.ArrayList;
99 import java.util.List;
102 * test for {@link ActionConvertor}
104 public class ActionConvertorTest {
106 List<Action> actions = new ArrayList<>();
107 static Integer actionItem = 0;
110 * prepare OpenflowPortsUtil util class
113 public void setUp() {
114 OpenflowPortsUtil.init();
118 public void testActionConvertorwithallParameters() {
124 setQueueActionData();
129 setExperimenterData();
130 List<org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731
131 .actions.grouping.Action> OFActionsList = ActionConvertor.getActions(actions, (short) 0X4, BigInteger.ONE, null);
133 // OutputActions(OFActionsList);
137 private void setExperimenterData() {
139 // TODO:SAL API Missing
143 private void setFieldData() {
145 SetFieldBuilder setFA = new SetFieldBuilder();
147 SetFieldBuilder matchBuilder = setFA;
149 matchBuilder.setInPort(new NodeConnectorId("openflow:1:2125"));
151 SetFieldBuilder setFB = new SetFieldBuilder();
153 ActionBuilder AB = new ActionBuilder();
154 AB.setOrder(actionItem).setAction(new SetFieldCaseBuilder().setSetField(setFB.build()).build());
156 actions.add(actionItem++, AB.build());
160 private void pbbActionData() {
161 PushPbbActionBuilder pushpbb = new PushPbbActionBuilder();
162 pushpbb.setEthernetType(10);
164 ActionBuilder AB = new ActionBuilder();
165 AB.setOrder(actionItem).setAction(new PushPbbActionCaseBuilder().setPushPbbAction(pushpbb.build()).build());
167 actions.add(actionItem++, AB.build());
169 PopPbbActionBuilder popPBB = new PopPbbActionBuilder();
171 ActionBuilder AB1 = new ActionBuilder();
172 AB1.setOrder(actionItem).setAction(new PopPbbActionCaseBuilder().setPopPbbAction(popPBB.build()).build());
174 actions.add(actionItem++, AB1.build());
178 private void NwTtlAction() {
179 SetNwTtlActionBuilder setNwTtlActionBuilder = new SetNwTtlActionBuilder();
181 setNwTtlActionBuilder.setNwTtl((short) 1);
182 ActionBuilder AB = new ActionBuilder();
183 AB.setOrder(actionItem).setAction(new SetNwTtlActionCaseBuilder().setSetNwTtlAction(setNwTtlActionBuilder.build()).build());
185 actions.add(actionItem++, AB.build());
187 DecNwTtlBuilder necNwTtlBuilder = new DecNwTtlBuilder();
190 ActionBuilder AB1 = new ActionBuilder();
191 AB1.setOrder(actionItem).setAction(new DecNwTtlCaseBuilder().setDecNwTtl(necNwTtlBuilder.build()).build());
193 actions.add(actionItem++, AB1.build());
197 private void setGroupAction() {
199 GroupActionBuilder grpIdAB = new GroupActionBuilder();
200 grpIdAB.setGroup("98");
202 ActionBuilder AB = new ActionBuilder();
203 AB.setOrder(actionItem).setAction(new GroupActionCaseBuilder().setGroupAction(grpIdAB.build()).build());
205 actions.add(actionItem++, AB.build());
209 // TODO - check if this method is needed (private and never used locally) - see line 94
210 private void OutputActions(List<org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common
211 .action.rev130731.actions.grouping.Action> oFActionsList) {
213 for (int item = 0; item < oFActionsList.size(); item++) {
215 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.Action action = oFActionsList
218 if (action.getType().equals(Output.class)) {
219 Assert.assertEquals((Integer) 10, (action.getAugmentation(MaxLengthAction.class)).getMaxLength());
220 long port = 4294967293L;
221 // Assert.assertEquals(port, (long) (action.getAugmentation(PortAction.class)).getPort().getValue());
225 if (action.getType().equals(CopyTtlIn.class)) {
226 Assert.assertEquals(action.getType(), CopyTtlIn.class);
229 if (action.getType().equals(CopyTtlOut.class)) {
231 Assert.assertEquals(action.getType(),
232 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.CopyTtlOut.class);
236 if (action.getType().equals(
237 // TODO:getMplsTtl is missing.
239 Assert.assertEquals(action.getType(), SetMplsTtl.class);
242 if (action.getType().equals(
243 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.DecMplsTtl.class)) {
244 Assert.assertEquals(action.getType(),
245 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.DecMplsTtl.class);
249 if (action.getType().equals(PushMpls.class)) {
251 EthertypeAction etherTypeAction = action
252 .getAugmentation(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.EthertypeAction.class);
254 if (etherTypeAction != null) {
257 Assert.assertEquals((Integer) 10, etherTypeAction.getEthertype().getValue());
261 if (action.getType().equals(PopMpls.class)) {
262 Assert.assertEquals((Integer) 10, (action.getAugmentation(EthertypeAction.class)).getEthertype()
267 if (action.getType().equals(
269 // TODO:SetQueue,I dont have getQueueId
271 Assert.assertEquals(action.getType(), SetQueue.class);
274 if (action.getType().equals(
276 GroupIdAction.class)) {
278 Assert.assertEquals(98, (long) (action.getAugmentation(GroupIdAction.class)).getGroupId());
282 if (action.getType().equals(
286 Assert.assertEquals(action.getType(), PushVlan.class);
289 if (action.getType().equals(
293 Assert.assertEquals(action.getType(), PopVlan.class);
297 if (action.getType().equals(
301 Assert.assertEquals(action.getType(), SetNwTtl.class);
304 if (action.getType().equals(
308 Assert.assertEquals(action.getType(), DecNwTtl.class);
311 if (action.getType().equals(PushPbb.class)) {
313 EthertypeAction etherTypeAction = action
314 .getAugmentation(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.EthertypeAction.class);
316 if (etherTypeAction != null) {
318 Assert.assertEquals((Integer) 10, etherTypeAction.getEthertype().getValue());
322 if (action.getType().equals(PopMpls.class)) {
323 Assert.assertEquals(action.getType(), PopMpls.class);
326 /* TODO - fix this test case
327 if (action.getType().equals(SetField.class)) {
329 OxmFieldsAction sf = action.getAugmentation(OxmFieldsAction.class);
331 Assert.assertEquals(OpenflowBasicClass.class, sf.getMatchEntries().get(0).getOxmClass());
333 if (sf.getMatchEntries().get(0).getOxmMatchField().equals(InPort.class)) {
334 Assert.assertEquals(2125, sf.getMatchEntries().get(0).getAugmentation(PortNumberMatchEntry.class)
335 .getPortNumber().getValue().intValue());
347 private void OutputActionData() {
348 OutputActionBuilder outputB = new OutputActionBuilder();
349 outputB.setMaxLength(10);
350 Uri uri = new Uri(OutputPortValues.CONTROLLER.toString());
351 outputB.setOutputNodeConnector(uri);
353 ActionBuilder AB = new ActionBuilder();
354 AB.setOrder(actionItem).setAction(new OutputActionCaseBuilder().setOutputAction(outputB.build()).build());
356 actions.add(actionItem++, AB.build());
360 private void CopyTtlData() {
361 CopyTtlOutBuilder copyB = new CopyTtlOutBuilder();
363 ActionBuilder AB = new ActionBuilder();
364 AB.setOrder(actionItem).setAction(new CopyTtlOutCaseBuilder().setCopyTtlOut(copyB.build()).build());
366 actions.add(actionItem++, AB.build());
368 CopyTtlInBuilder copyTtlInBuilder = new CopyTtlInBuilder();
370 ActionBuilder AB1 = new ActionBuilder();
371 AB1.setOrder(actionItem).setAction(new CopyTtlInCaseBuilder().setCopyTtlIn(copyTtlInBuilder.build()).build());
373 actions.add(actionItem++, AB1.build());
377 private void MplsTtlActionData() {
379 SetMplsTtlActionBuilder setMplsTtlActionB = new SetMplsTtlActionBuilder();
381 setMplsTtlActionB.setMplsTtl((short) 10);
382 ActionBuilder AB1 = new ActionBuilder();
383 AB1.setOrder(actionItem).setAction(new SetMplsTtlActionCaseBuilder().setSetMplsTtlAction(setMplsTtlActionB.build()).build());
386 actions.add(actionItem++, AB1.build());
388 DecMplsTtlBuilder decMplsTtlB = new DecMplsTtlBuilder();
390 ActionBuilder AB = new ActionBuilder();
391 AB.setOrder(actionItem).setAction(new DecMplsTtlCaseBuilder().setDecMplsTtl(decMplsTtlB.build()).build());
393 actions.add(actionItem++, AB1.build());
396 private void vlanActionData() {
397 PushVlanActionBuilder pvB = new PushVlanActionBuilder();
399 pvB.setVlanId(new VlanId(10));
401 ActionBuilder AB1 = new ActionBuilder();
402 AB1.setOrder(actionItem).setAction(new PushVlanActionCaseBuilder().setPushVlanAction(pvB.build()).build());
404 actions.add(actionItem++, AB1.build());
406 PopVlanActionBuilder popVAB = new PopVlanActionBuilder();
408 ActionBuilder AB = new ActionBuilder();
409 AB.setOrder(actionItem).setAction(new PopVlanActionCaseBuilder().setPopVlanAction(popVAB.build()).build());
411 actions.add(actionItem++, AB.build());
415 private void mplsActionData() {
417 PushMplsActionBuilder pushMB = new PushMplsActionBuilder();
418 pushMB.setEthernetType(10);
420 ActionBuilder AB = new ActionBuilder();
421 AB.setOrder(actionItem).setAction(new PushMplsActionCaseBuilder().setPushMplsAction(pushMB.build()).build());
423 actions.add(actionItem++, AB.build());
425 PopMplsActionBuilder popMB = new PopMplsActionBuilder();
426 popMB.setEthernetType(10);
428 ActionBuilder AB1 = new ActionBuilder();
429 AB1.setOrder(actionItem).setAction(new PopMplsActionCaseBuilder().setPopMplsAction(popMB.build()).build());
431 actions.add(actionItem++, AB1.build());
435 * testing {@link ActionConvertor#ofToSALPushMplsAction(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.Action)}
439 public void testOFtoSALPushMplsAction() {
440 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.ActionBuilder actionBuilder
441 = new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.ActionBuilder();
443 actionBuilder.setType(PushVlan.class);
444 EthertypeActionBuilder ethertypeActionBuilder = new EthertypeActionBuilder();
445 ethertypeActionBuilder.setEthertype(new EtherType(new Integer(34888)));
446 actionBuilder.addAugmentation(EthertypeAction.class, ethertypeActionBuilder.build());
447 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.Action action = actionBuilder.build();
449 Assert.assertEquals(34888, ActionConvertor.ofToSALPushMplsAction(action).getPushMplsAction().getEthernetType().intValue());
452 private void setQueueActionData() {
454 SetQueueActionBuilder setQB = new SetQueueActionBuilder();
455 setQB.setQueue("99");
457 ActionBuilder AB1 = new ActionBuilder();
458 AB1.setOrder(actionItem).setAction(new SetQueueActionCaseBuilder().setSetQueueAction(setQB.build()).build());
460 actions.add(actionItem++, AB1.build());
465 * testing {@link ActionConvertor#SalToOFSetNwDst(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action, org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.ActionBuilder, short)}
469 public void testSalToOFSetNwDst10v4() {
471 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.ActionBuilder actionBuilder = new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.ActionBuilder();
473 address = new Ipv4Builder().setIpv4Address(new Ipv4Prefix("10.0.0.1")).build();
474 SetNwDstActionCase action = provisionNwDstActionBuilder(address);
475 ActionConvertor.SalToOFSetNwDst(action, actionBuilder, version);
476 Assert.assertEquals(SetNwDst.class, actionBuilder.getType());
477 Assert.assertEquals("10.0.0.1", actionBuilder.getAugmentation(IpAddressAction.class).getIpAddress().getValue());
481 * testing {@link ActionConvertor#SalToOFSetNwDst(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action, org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.ActionBuilder, short)}
485 public void testSalToOFSetNwDst10v6() {
487 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.ActionBuilder actionBuilder = new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.ActionBuilder();
489 address = new Ipv6Builder().setIpv6Address(new Ipv6Prefix("2001:0db8:85a3:0042:1000:8a2e:0370:7334")).build();
490 SetNwDstActionCase action = provisionNwDstActionBuilder(address);
491 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.Action ofAction = ActionConvertor.SalToOFSetNwDst(action, actionBuilder, version);
492 Assert.assertNull(ofAction);
497 * testing {@link ActionConvertor#SalToOFSetNwDst(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action, org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.ActionBuilder, short)}
501 public void testSalToOFSetNwDst13v4() {
503 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.ActionBuilder actionBuilder = new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.ActionBuilder();
505 address = new Ipv4Builder().setIpv4Address(new Ipv4Prefix("10.0.0.1")).build();
506 SetNwDstActionCase action = provisionNwDstActionBuilder(address);
507 ActionConvertor.SalToOFSetNwDst(action, actionBuilder, version);
508 Assert.assertEquals(SetField.class, actionBuilder.getType());
509 MatchEntries matchEntry = actionBuilder.getAugmentation(OxmFieldsAction.class).getMatchEntries().get(0);
510 Assert.assertEquals(Ipv4Dst.class, matchEntry.getOxmMatchField());
511 Assert.assertEquals("10.0.0.1", matchEntry.getAugmentation(Ipv4AddressMatchEntry.class).getIpv4Address().getValue());
516 * testing {@link ActionConvertor#SalToOFSetNwDst(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action, org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.ActionBuilder, short)}
520 public void testSalToOFSetNwDst13v6() {
522 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.ActionBuilder actionBuilder = new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.ActionBuilder();
524 address = new Ipv6Builder().setIpv6Address(new Ipv6Prefix("2001:0db8:85a3:0042:1000:8a2e:0370:7334")).build();
525 SetNwDstActionCase action = provisionNwDstActionBuilder(address);
526 ActionConvertor.SalToOFSetNwDst(action, actionBuilder, version);
527 Assert.assertEquals(SetField.class, actionBuilder.getType());
528 MatchEntries matchEntry = actionBuilder.getAugmentation(OxmFieldsAction.class).getMatchEntries().get(0);
529 Assert.assertEquals(Ipv6Dst.class, matchEntry.getOxmMatchField());
530 Assert.assertEquals("2001:0db8:85a3:0042:1000:8a2e:0370:7334", matchEntry.getAugmentation(Ipv6AddressMatchEntry.class).getIpv6Address().getValue());
536 * testing {@link ActionConvertor#SalToOFSetNwSrc(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action, org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.ActionBuilder, short)}
540 public void testSalToOFSetNwSrc10v4() {
542 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.ActionBuilder actionBuilder = new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.ActionBuilder();
544 address = new Ipv4Builder().setIpv4Address(new Ipv4Prefix("10.0.0.1")).build();
545 SetNwSrcActionCase action = provisionNwSrcActionBuilder(address);
546 ActionConvertor.SalToOFSetNwSrc(action, actionBuilder, version);
547 Assert.assertEquals(SetNwSrc.class, actionBuilder.getType());
548 Assert.assertEquals("10.0.0.1", actionBuilder.getAugmentation(IpAddressAction.class).getIpAddress().getValue());
552 * testing {@link ActionConvertor#SalToOFSetNwSrc(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action, org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.ActionBuilder, short)}
556 public void testSalToOFSetNwSrc10v6() {
558 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.ActionBuilder actionBuilder = new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.ActionBuilder();
560 address = new Ipv6Builder().setIpv6Address(new Ipv6Prefix("2001:0db8:85a3:0042:1000:8a2e:0370:7334")).build();
561 SetNwSrcActionCase action = provisionNwSrcActionBuilder(address);
562 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.Action ofAction = ActionConvertor.SalToOFSetNwSrc(action, actionBuilder, version);
563 Assert.assertNull(ofAction);
567 * testing {@link ActionConvertor#SalToOFSetNwSrc(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action, org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.ActionBuilder, short)}
571 public void testSalToOFSetNwSrc13v4() {
573 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.ActionBuilder actionBuilder = new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.ActionBuilder();
575 address = new Ipv4Builder().setIpv4Address(new Ipv4Prefix("10.0.0.1")).build();
576 SetNwSrcActionCase action = provisionNwSrcActionBuilder(address);
577 ActionConvertor.SalToOFSetNwSrc(action, actionBuilder, version);
578 Assert.assertEquals(SetField.class, actionBuilder.getType());
579 MatchEntries matchEntry = actionBuilder.getAugmentation(OxmFieldsAction.class).getMatchEntries().get(0);
580 Assert.assertEquals(Ipv4Src.class, matchEntry.getOxmMatchField());
581 Assert.assertEquals("10.0.0.1", matchEntry.getAugmentation(Ipv4AddressMatchEntry.class).getIpv4Address().getValue());
585 * testing {@link ActionConvertor#SalToOFSetNwSrc(org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action, org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.ActionBuilder, short)}
589 public void testSalToOFSetNwSrc13v6() {
591 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.ActionBuilder actionBuilder = new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.ActionBuilder();
593 address = new Ipv6Builder().setIpv6Address(new Ipv6Prefix("2001:0db8:85a3:0042:1000:8a2e:0370:7334")).build();
594 SetNwSrcActionCase action = provisionNwSrcActionBuilder(address);
595 ActionConvertor.SalToOFSetNwSrc(action, actionBuilder, version);
596 Assert.assertEquals(SetField.class, actionBuilder.getType());
597 MatchEntries matchEntry = actionBuilder.getAugmentation(OxmFieldsAction.class).getMatchEntries().get(0);
598 Assert.assertEquals(Ipv6Src.class, matchEntry.getOxmMatchField());
599 Assert.assertEquals("2001:0db8:85a3:0042:1000:8a2e:0370:7334", matchEntry.getAugmentation(Ipv6AddressMatchEntry.class).getIpv6Address().getValue());
603 * testing {@link ActionConvertor#ofToSALPopMplsAction(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.Action)}
607 public void testOFtoSALPopMplsAction() {
608 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.ActionBuilder actionBuilder
609 = new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.ActionBuilder();
611 actionBuilder.setType(PopMpls.class);
612 EthertypeActionBuilder ethertypeActionBuilder = new EthertypeActionBuilder();
613 ethertypeActionBuilder.setEthertype(new EtherType(new Integer(34888)));
614 actionBuilder.addAugmentation(EthertypeAction.class, ethertypeActionBuilder.build());
615 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.Action action = actionBuilder.build();
617 Assert.assertEquals(34888, ActionConvertor.ofToSALPopMplsAction(action).getPopMplsAction().getEthernetType().intValue());
620 private static SetNwDstActionCase provisionNwDstActionBuilder(Address address) {
621 SetNwDstAction nwDstAction = new SetNwDstActionBuilder().setAddress(address).build();
622 SetNwDstActionCase action = new SetNwDstActionCaseBuilder()
623 .setSetNwDstAction(nwDstAction)
628 private static SetNwSrcActionCase provisionNwSrcActionBuilder(Address address) {
629 SetNwSrcAction nwSrcAction = new SetNwSrcActionBuilder().setAddress(address).build();
630 SetNwSrcActionCase action = new SetNwSrcActionCaseBuilder()
631 .setSetNwSrcAction(nwSrcAction)