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 java.math.BigInteger;
13 import java.util.ArrayList;
14 import java.util.List;
16 import junit.framework.Assert;
18 import org.junit.Test;
19 import org.opendaylight.controller.sal.action.PopVlan;
20 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix;
21 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv6Prefix;
22 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlInCaseBuilder;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlOutCaseBuilder;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DecMplsTtlCaseBuilder;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DecNwTtlCaseBuilder;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.GroupActionCaseBuilder;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.OutputActionCaseBuilder;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopMplsActionCaseBuilder;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopPbbActionCaseBuilder;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopVlanActionCaseBuilder;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushMplsActionCaseBuilder;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushPbbActionCaseBuilder;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushVlanActionCaseBuilder;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetFieldCaseBuilder;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetMplsTtlActionCaseBuilder;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwDstActionCase;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwDstActionCaseBuilder;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwSrcActionCase;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwSrcActionCaseBuilder;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwTtlActionCaseBuilder;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetQueueActionCaseBuilder;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.in._case.CopyTtlInBuilder;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.copy.ttl.out._case.CopyTtlOutBuilder;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.dec.mpls.ttl._case.DecMplsTtlBuilder;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.dec.nw.ttl._case.DecNwTtlBuilder;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.group.action._case.GroupActionBuilder;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.output.action._case.OutputActionBuilder;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.mpls.action._case.PopMplsActionBuilder;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.pbb.action._case.PopPbbActionBuilder;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.pop.vlan.action._case.PopVlanActionBuilder;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.mpls.action._case.PushMplsActionBuilder;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.pbb.action._case.PushPbbActionBuilder;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.vlan.action._case.PushVlanActionBuilder;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.field._case.SetFieldBuilder;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.mpls.ttl.action._case.SetMplsTtlActionBuilder;
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.dst.action._case.SetNwDstAction;
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.dst.action._case.SetNwDstActionBuilder;
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.src.action._case.SetNwSrcAction;
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.src.action._case.SetNwSrcActionBuilder;
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.ttl.action._case.SetNwTtlActionBuilder;
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.queue.action._case.SetQueueActionBuilder;
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action;
64 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
65 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.address.Address;
66 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.address.address.Ipv4Builder;
67 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.address.address.Ipv6Builder;
68 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.OutputPortValues;
69 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
70 import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanId;
71 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.EthertypeAction;
72 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.GroupIdAction;
73 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.IpAddressAction;
74 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.Ipv4AddressMatchEntry;
75 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.Ipv6AddressMatchEntry;
76 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.MaxLengthAction;
77 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.OxmFieldsAction;
78 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.CopyTtlIn;
79 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.CopyTtlOut;
80 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.DecNwTtl;
81 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.Output;
82 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.PopMpls;
83 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.PushMpls;
84 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.PushPbb;
85 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.PushVlan;
86 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.SetField;
87 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.SetMplsTtl;
88 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.SetNwDst;
89 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.SetNwSrc;
90 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.SetNwTtl;
91 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.SetQueue;
92 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Ipv4Dst;
93 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Ipv4Src;
94 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Ipv6Dst;
95 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Ipv6Src;
96 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.oxm.fields.grouping.MatchEntries;
98 public class ActionConvertorTest {
100 List<Action> actions = new ArrayList<>();
101 static Integer actionItem = 0;
104 public void testActionConvertorwithallParameters() {
110 setQueueActionData();
115 setExperimenterData();
116 List<org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731
117 .actions.grouping.Action> OFActionsList = ActionConvertor.getActions(actions, (short) 0X4,BigInteger.valueOf(1));
119 // OutputActions(OFActionsList);
123 private void setExperimenterData() {
125 // TODO:SAL API Missing
129 private void setFieldData() {
131 SetFieldBuilder setFA = new SetFieldBuilder();
133 SetFieldBuilder matchBuilder = setFA;
135 matchBuilder.setInPort(new NodeConnectorId("openflow:1:2125"));
137 SetFieldBuilder setFB = new SetFieldBuilder();
139 ActionBuilder AB = new ActionBuilder();
140 AB.setAction(new SetFieldCaseBuilder().setSetField(setFB.build()).build());
142 actions.add(actionItem++, AB.build());
146 private void pbbActionData() {
147 PushPbbActionBuilder pushpbb = new PushPbbActionBuilder();
148 pushpbb.setEthernetType(10);
150 ActionBuilder AB = new ActionBuilder();
151 AB.setAction(new PushPbbActionCaseBuilder().setPushPbbAction(pushpbb.build()).build());
153 actions.add(actionItem++, AB.build());
155 PopPbbActionBuilder popPBB = new PopPbbActionBuilder();
157 ActionBuilder AB1 = new ActionBuilder();
158 AB1.setAction(new PopPbbActionCaseBuilder().setPopPbbAction(popPBB.build()).build());
160 actions.add(actionItem++, AB1.build());
164 private void NwTtlAction() {
165 SetNwTtlActionBuilder setNwTtlActionBuilder = new SetNwTtlActionBuilder();
167 setNwTtlActionBuilder.setNwTtl((short) 1);
168 ActionBuilder AB = new ActionBuilder();
169 AB.setAction(new SetNwTtlActionCaseBuilder().setSetNwTtlAction(setNwTtlActionBuilder.build()).build());
171 actions.add(actionItem++, AB.build());
173 DecNwTtlBuilder necNwTtlBuilder = new DecNwTtlBuilder();
176 ActionBuilder AB1 = new ActionBuilder();
177 AB1.setAction(new DecNwTtlCaseBuilder().setDecNwTtl(necNwTtlBuilder.build()).build());
179 actions.add(actionItem++, AB1.build());
183 private void setGroupAction() {
185 GroupActionBuilder grpIdAB = new GroupActionBuilder();
186 grpIdAB.setGroup("98");
188 ActionBuilder AB = new ActionBuilder();
189 AB.setAction(new GroupActionCaseBuilder().setGroupAction(grpIdAB.build()).build());
191 actions.add(actionItem++, AB.build());
195 // TODO - check if this method is needed (private and never used locally) - see line 94
196 private void OutputActions(List<org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common
197 .action.rev130731.actions.grouping.Action> oFActionsList) {
199 for (int item = 0; item < oFActionsList.size(); item++) {
201 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.Action action = oFActionsList
204 if (action.getType().equals(Output.class)) {
205 Assert.assertEquals((Integer) 10, (action.getAugmentation(MaxLengthAction.class)).getMaxLength());
206 long port = 4294967293L;
207 // Assert.assertEquals(port, (long) (action.getAugmentation(PortAction.class)).getPort().getValue());
211 if (action.getType().equals(CopyTtlIn.class)) {
212 Assert.assertEquals(action.getType(), CopyTtlIn.class);
215 if (action.getType().equals(CopyTtlOut.class)) {
217 Assert.assertEquals(action.getType(),
218 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.CopyTtlOut.class);
222 if (action.getType().equals(
223 // TODO:getMplsTtl is missing.
225 Assert.assertEquals(action.getType(), SetMplsTtl.class);
228 if (action.getType().equals(
229 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.DecMplsTtl.class)) {
230 Assert.assertEquals(action.getType(),
231 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.DecMplsTtl.class);
235 if (action.getType().equals(PushMpls.class)) {
237 EthertypeAction etherTypeAction = action
238 .getAugmentation(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.EthertypeAction.class);
240 if (etherTypeAction != null) {
243 Assert.assertEquals((Integer) 10, etherTypeAction.getEthertype().getValue());
247 if (action.getType().equals(PopMpls.class)) {
248 Assert.assertEquals((Integer) 10, (action.getAugmentation(EthertypeAction.class)).getEthertype()
253 if (action.getType().equals(
255 // TODO:SetQueue,I dont have getQueueId
257 Assert.assertEquals(action.getType(), SetQueue.class);
260 if (action.getType().equals(
262 GroupIdAction.class)) {
264 Assert.assertEquals(98, (long) (action.getAugmentation(GroupIdAction.class)).getGroupId());
268 if (action.getType().equals(
272 Assert.assertEquals(action.getType(), PushVlan.class);
275 if (action.getType().equals(
279 Assert.assertEquals(action.getType(), PopVlan.class);
283 if (action.getType().equals(
287 Assert.assertEquals(action.getType(), SetNwTtl.class);
290 if (action.getType().equals(
294 Assert.assertEquals(action.getType(), DecNwTtl.class);
297 if (action.getType().equals(PushPbb.class)) {
299 EthertypeAction etherTypeAction = action
300 .getAugmentation(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.EthertypeAction.class);
302 if (etherTypeAction != null) {
304 Assert.assertEquals((Integer) 10, etherTypeAction.getEthertype().getValue());
308 if (action.getType().equals(PopMpls.class)) {
309 Assert.assertEquals(action.getType(), PopMpls.class);
312 /* TODO - fix this test case
313 if (action.getType().equals(SetField.class)) {
315 OxmFieldsAction sf = action.getAugmentation(OxmFieldsAction.class);
317 Assert.assertEquals(OpenflowBasicClass.class, sf.getMatchEntries().get(0).getOxmClass());
319 if (sf.getMatchEntries().get(0).getOxmMatchField().equals(InPort.class)) {
320 Assert.assertEquals(2125, sf.getMatchEntries().get(0).getAugmentation(PortNumberMatchEntry.class)
321 .getPortNumber().getValue().intValue());
333 private void OutputActionData() {
334 OutputActionBuilder outputB = new OutputActionBuilder();
335 outputB.setMaxLength(10);
336 Uri uri = new Uri(OutputPortValues.CONTROLLER.toString());
337 outputB.setOutputNodeConnector(uri);
339 ActionBuilder AB = new ActionBuilder();
340 AB.setAction(new OutputActionCaseBuilder().setOutputAction(outputB.build()).build());
342 actions.add(actionItem++, AB.build());
346 private void CopyTtlData() {
347 CopyTtlOutBuilder copyB = new CopyTtlOutBuilder();
349 ActionBuilder AB = new ActionBuilder();
350 AB.setAction(new CopyTtlOutCaseBuilder().setCopyTtlOut(copyB.build()).build());
352 actions.add(actionItem++, AB.build());
354 CopyTtlInBuilder copyTtlInBuilder = new CopyTtlInBuilder();
356 ActionBuilder AB1 = new ActionBuilder();
357 AB1.setAction(new CopyTtlInCaseBuilder().setCopyTtlIn(copyTtlInBuilder.build()).build());
359 actions.add(actionItem++, AB1.build());
363 private void MplsTtlActionData() {
365 SetMplsTtlActionBuilder setMplsTtlActionB = new SetMplsTtlActionBuilder();
367 setMplsTtlActionB.setMplsTtl((short) 10);
368 ActionBuilder AB1 = new ActionBuilder();
369 AB1.setAction(new SetMplsTtlActionCaseBuilder().setSetMplsTtlAction(setMplsTtlActionB.build()).build());
372 actions.add(actionItem++, AB1.build());
374 DecMplsTtlBuilder decMplsTtlB = new DecMplsTtlBuilder();
376 ActionBuilder AB = new ActionBuilder();
377 AB.setAction(new DecMplsTtlCaseBuilder().setDecMplsTtl(decMplsTtlB.build()).build());
379 actions.add(actionItem++, AB1.build());
382 private void vlanActionData() {
383 PushVlanActionBuilder pvB = new PushVlanActionBuilder();
385 pvB.setVlanId(new VlanId(10));
387 ActionBuilder AB1 = new ActionBuilder();
388 AB1.setAction(new PushVlanActionCaseBuilder().setPushVlanAction(pvB.build()).build());
390 actions.add(actionItem++, AB1.build());
392 PopVlanActionBuilder popVAB = new PopVlanActionBuilder();
394 ActionBuilder AB = new ActionBuilder();
395 AB.setAction(new PopVlanActionCaseBuilder().setPopVlanAction(popVAB.build()).build());
397 actions.add(actionItem++, AB.build());
401 private void mplsActionData() {
403 PushMplsActionBuilder pushMB = new PushMplsActionBuilder();
404 pushMB.setEthernetType(10);
406 ActionBuilder AB = new ActionBuilder();
407 AB.setAction(new PushMplsActionCaseBuilder().setPushMplsAction(pushMB.build()).build());
409 actions.add(actionItem++, AB.build());
411 PopMplsActionBuilder popMB = new PopMplsActionBuilder();
412 popMB.setEthernetType(10);
414 ActionBuilder AB1 = new ActionBuilder();
415 AB1.setAction(new PopMplsActionCaseBuilder().setPopMplsAction(popMB.build()).build());
417 actions.add(actionItem++, AB1.build());
420 private void setQueueActionData() {
422 SetQueueActionBuilder setQB = new SetQueueActionBuilder();
423 setQB.setQueue("99");
425 ActionBuilder AB1 = new ActionBuilder();
426 AB1.setAction(new SetQueueActionCaseBuilder().setSetQueueAction(setQB.build()).build());
428 actions.add(actionItem++, AB1.build());
433 * 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)}
437 public void testSalToOFSetNwDst10v4() {
439 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();
441 address = new Ipv4Builder().setIpv4Address(new Ipv4Prefix("10.0.0.1")).build();
442 SetNwDstActionCase action = provisionNwDstActionBuilder(address);
443 ActionConvertor.SalToOFSetNwDst(action, actionBuilder, version);
444 Assert.assertEquals(SetNwDst.class, actionBuilder.getType());
445 Assert.assertEquals("10.0.0.1", actionBuilder.getAugmentation(IpAddressAction.class).getIpAddress().getValue());
449 * 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)}
453 public void testSalToOFSetNwDst10v6() {
455 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();
457 address = new Ipv6Builder().setIpv6Address(new Ipv6Prefix("2001:0db8:85a3:0042:1000:8a2e:0370:7334")).build();
458 SetNwDstActionCase action = provisionNwDstActionBuilder(address);
459 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.Action ofAction = ActionConvertor.SalToOFSetNwDst(action, actionBuilder, version);
460 Assert.assertNull(ofAction);
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 testSalToOFSetNwDst13v4() {
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(SetField.class, actionBuilder.getType());
477 MatchEntries matchEntry = actionBuilder.getAugmentation(OxmFieldsAction.class).getMatchEntries().get(0);
478 Assert.assertEquals(Ipv4Dst.class, matchEntry.getOxmMatchField());
479 Assert.assertEquals("10.0.0.1", matchEntry.getAugmentation(Ipv4AddressMatchEntry.class).getIpv4Address().getValue());
484 * 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)}
488 public void testSalToOFSetNwDst13v6() {
490 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();
492 address = new Ipv6Builder().setIpv6Address(new Ipv6Prefix("2001:0db8:85a3:0042:1000:8a2e:0370:7334")).build();
493 SetNwDstActionCase action = provisionNwDstActionBuilder(address);
494 ActionConvertor.SalToOFSetNwDst(action, actionBuilder, version);
495 Assert.assertEquals(SetField.class, actionBuilder.getType());
496 MatchEntries matchEntry = actionBuilder.getAugmentation(OxmFieldsAction.class).getMatchEntries().get(0);
497 Assert.assertEquals(Ipv6Dst.class, matchEntry.getOxmMatchField());
498 Assert.assertEquals("2001:0db8:85a3:0042:1000:8a2e:0370:7334", matchEntry.getAugmentation(Ipv6AddressMatchEntry.class).getIpv6Address().getValue());
504 * 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)}
508 public void testSalToOFSetNwSrc10v4() {
510 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();
512 address = new Ipv4Builder().setIpv4Address(new Ipv4Prefix("10.0.0.1")).build();
513 SetNwSrcActionCase action = provisionNwSrcActionBuilder(address);
514 ActionConvertor.SalToOFSetNwSrc(action, actionBuilder, version);
515 Assert.assertEquals(SetNwSrc.class, actionBuilder.getType());
516 Assert.assertEquals("10.0.0.1", actionBuilder.getAugmentation(IpAddressAction.class).getIpAddress().getValue());
520 * 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)}
524 public void testSalToOFSetNwSrc10v6() {
526 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();
528 address = new Ipv6Builder().setIpv6Address(new Ipv6Prefix("2001:0db8:85a3:0042:1000:8a2e:0370:7334")).build();
529 SetNwSrcActionCase action = provisionNwSrcActionBuilder(address);
530 org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.Action ofAction = ActionConvertor.SalToOFSetNwSrc(action, actionBuilder, version);
531 Assert.assertNull(ofAction);
535 * 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)}
539 public void testSalToOFSetNwSrc13v4() {
541 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();
543 address = new Ipv4Builder().setIpv4Address(new Ipv4Prefix("10.0.0.1")).build();
544 SetNwSrcActionCase action = provisionNwSrcActionBuilder(address);
545 ActionConvertor.SalToOFSetNwSrc(action, actionBuilder, version);
546 Assert.assertEquals(SetField.class, actionBuilder.getType());
547 MatchEntries matchEntry = actionBuilder.getAugmentation(OxmFieldsAction.class).getMatchEntries().get(0);
548 Assert.assertEquals(Ipv4Src.class, matchEntry.getOxmMatchField());
549 Assert.assertEquals("10.0.0.1", matchEntry.getAugmentation(Ipv4AddressMatchEntry.class).getIpv4Address().getValue());
553 * 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)}
557 public void testSalToOFSetNwSrc13v6() {
559 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();
561 address = new Ipv6Builder().setIpv6Address(new Ipv6Prefix("2001:0db8:85a3:0042:1000:8a2e:0370:7334")).build();
562 SetNwSrcActionCase action = provisionNwSrcActionBuilder(address);
563 ActionConvertor.SalToOFSetNwSrc(action, actionBuilder, version);
564 Assert.assertEquals(SetField.class, actionBuilder.getType());
565 MatchEntries matchEntry = actionBuilder.getAugmentation(OxmFieldsAction.class).getMatchEntries().get(0);
566 Assert.assertEquals(Ipv6Src.class, matchEntry.getOxmMatchField());
567 Assert.assertEquals("2001:0db8:85a3:0042:1000:8a2e:0370:7334", matchEntry.getAugmentation(Ipv6AddressMatchEntry.class).getIpv6Address().getValue());
570 private static SetNwDstActionCase provisionNwDstActionBuilder(Address address) {
571 SetNwDstAction nwDstAction = new SetNwDstActionBuilder().setAddress(address).build();
572 SetNwDstActionCase action = new SetNwDstActionCaseBuilder()
573 .setSetNwDstAction(nwDstAction)
578 private static SetNwSrcActionCase provisionNwSrcActionBuilder(Address address) {
579 SetNwSrcAction nwSrcAction = new SetNwSrcActionBuilder().setAddress(address).build();
580 SetNwSrcActionCase action = new SetNwSrcActionCaseBuilder()
581 .setSetNwSrcAction(nwSrcAction)