718505e19535dbb11c277deaad51a9245b381fdb
[openflowplugin.git] / openflowplugin / src / test / java / org / opendaylight / openflowplugin / openflow / md / core / sal / convertor / ActionConvertorTest.java
1 /**
2  * Copyright (c) 2014 Ericsson India Global Services Pvt Ltd. and others.  All rights reserved.
3  *
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
7  *
8  * Contributor: usha.m.s@ericsson.com
9  */
10 package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor;
11
12 import java.math.BigInteger;
13 import java.util.ArrayList;
14 import java.util.List;
15
16 import junit.framework.Assert;
17
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;
97
98 public class ActionConvertorTest {
99
100     List<Action> actions = new ArrayList<>();
101     static Integer actionItem = 0;
102
103     @Test
104     public void testActionConvertorwithallParameters() {
105         OutputActionData();
106         CopyTtlData();
107         MplsTtlActionData();
108         vlanActionData();
109         mplsActionData();
110         setQueueActionData();
111         setGroupAction();
112         NwTtlAction();
113         pbbActionData();
114         setFieldData();
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));
118
119        // OutputActions(OFActionsList);
120
121     }
122
123     private void setExperimenterData() {
124
125         // TODO:SAL API Missing
126
127     }
128
129     private void setFieldData() {
130
131         SetFieldBuilder setFA = new SetFieldBuilder();
132
133         SetFieldBuilder matchBuilder = setFA;
134
135         matchBuilder.setInPort(new NodeConnectorId("openflow:1:2125"));
136
137         SetFieldBuilder setFB = new SetFieldBuilder();
138
139         ActionBuilder AB = new ActionBuilder();
140         AB.setAction(new SetFieldCaseBuilder().setSetField(setFB.build()).build());
141
142         actions.add(actionItem++, AB.build());
143
144     }
145
146     private void pbbActionData() {
147         PushPbbActionBuilder pushpbb = new PushPbbActionBuilder();
148         pushpbb.setEthernetType(10);
149
150         ActionBuilder AB = new ActionBuilder();
151         AB.setAction(new PushPbbActionCaseBuilder().setPushPbbAction(pushpbb.build()).build());
152
153         actions.add(actionItem++, AB.build());
154
155         PopPbbActionBuilder popPBB = new PopPbbActionBuilder();
156
157         ActionBuilder AB1 = new ActionBuilder();
158         AB1.setAction(new PopPbbActionCaseBuilder().setPopPbbAction(popPBB.build()).build());
159
160         actions.add(actionItem++, AB1.build());
161
162     }
163
164     private void NwTtlAction() {
165         SetNwTtlActionBuilder setNwTtlActionBuilder = new SetNwTtlActionBuilder();
166
167         setNwTtlActionBuilder.setNwTtl((short) 1);
168         ActionBuilder AB = new ActionBuilder();
169         AB.setAction(new SetNwTtlActionCaseBuilder().setSetNwTtlAction(setNwTtlActionBuilder.build()).build());
170
171         actions.add(actionItem++, AB.build());
172
173         DecNwTtlBuilder necNwTtlBuilder = new DecNwTtlBuilder();
174
175
176         ActionBuilder AB1 = new ActionBuilder();
177         AB1.setAction(new DecNwTtlCaseBuilder().setDecNwTtl(necNwTtlBuilder.build()).build());
178
179         actions.add(actionItem++, AB1.build());
180
181     }
182
183     private void setGroupAction() {
184
185         GroupActionBuilder grpIdAB = new GroupActionBuilder();
186         grpIdAB.setGroup("98");
187
188         ActionBuilder AB = new ActionBuilder();
189         AB.setAction(new GroupActionCaseBuilder().setGroupAction(grpIdAB.build()).build());
190
191         actions.add(actionItem++, AB.build());
192
193     }
194
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) {
198
199         for (int item = 0; item < oFActionsList.size(); item++) {
200
201             org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.Action action = oFActionsList
202                     .get(item);
203
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());
208
209
210             }
211             if (action.getType().equals(CopyTtlIn.class)) {
212                 Assert.assertEquals(action.getType(), CopyTtlIn.class);
213
214             }
215             if (action.getType().equals(CopyTtlOut.class)) {
216
217                 Assert.assertEquals(action.getType(),
218                         org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.CopyTtlOut.class);
219
220             }
221
222             if (action.getType().equals(
223             // TODO:getMplsTtl is missing.
224                     SetMplsTtl.class)) {
225                 Assert.assertEquals(action.getType(), SetMplsTtl.class);
226
227             }
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);
232
233             }
234
235             if (action.getType().equals(PushMpls.class)) {
236
237                 EthertypeAction etherTypeAction = action
238                         .getAugmentation(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.EthertypeAction.class);
239
240                 if (etherTypeAction != null) {
241
242
243                     Assert.assertEquals((Integer) 10, etherTypeAction.getEthertype().getValue());
244                 }
245             }
246
247             if (action.getType().equals(PopMpls.class)) {
248                 Assert.assertEquals((Integer) 10, (action.getAugmentation(EthertypeAction.class)).getEthertype()
249                         .getValue());
250
251             }
252
253             if (action.getType().equals(
254
255             // TODO:SetQueue,I dont have getQueueId
256                     SetQueue.class)) {
257                 Assert.assertEquals(action.getType(), SetQueue.class);
258             }
259
260             if (action.getType().equals(
261
262             GroupIdAction.class)) {
263
264                 Assert.assertEquals(98, (long) (action.getAugmentation(GroupIdAction.class)).getGroupId());
265
266             }
267
268             if (action.getType().equals(
269
270                     PushVlan.class)) {
271
272                 Assert.assertEquals(action.getType(), PushVlan.class);
273
274                     }
275             if (action.getType().equals(
276
277             PopVlan.class)) {
278
279                 Assert.assertEquals(action.getType(), PopVlan.class);
280
281             }
282
283             if (action.getType().equals(
284
285             SetNwTtl.class)) {
286
287                 Assert.assertEquals(action.getType(), SetNwTtl.class);
288
289             }
290             if (action.getType().equals(
291
292             DecNwTtl.class)) {
293
294                 Assert.assertEquals(action.getType(), DecNwTtl.class);
295
296             }
297             if (action.getType().equals(PushPbb.class)) {
298
299                 EthertypeAction etherTypeAction = action
300                         .getAugmentation(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.EthertypeAction.class);
301
302                 if (etherTypeAction != null) {
303
304                     Assert.assertEquals((Integer) 10, etherTypeAction.getEthertype().getValue());
305                 }
306             }
307
308             if (action.getType().equals(PopMpls.class)) {
309                 Assert.assertEquals(action.getType(), PopMpls.class);
310
311             }
312             /* TODO - fix this test case
313             if (action.getType().equals(SetField.class)) {
314
315                 OxmFieldsAction sf = action.getAugmentation(OxmFieldsAction.class);
316
317                 Assert.assertEquals(OpenflowBasicClass.class, sf.getMatchEntries().get(0).getOxmClass());
318
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());
322
323
324                     }
325
326             }
327             */
328
329         }
330
331     }
332
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);
338
339         ActionBuilder AB = new ActionBuilder();
340         AB.setAction(new OutputActionCaseBuilder().setOutputAction(outputB.build()).build());
341
342         actions.add(actionItem++, AB.build());
343
344     }
345
346     private void CopyTtlData() {
347         CopyTtlOutBuilder copyB = new CopyTtlOutBuilder();
348
349         ActionBuilder AB = new ActionBuilder();
350         AB.setAction(new CopyTtlOutCaseBuilder().setCopyTtlOut(copyB.build()).build());
351
352         actions.add(actionItem++, AB.build());
353
354         CopyTtlInBuilder copyTtlInBuilder = new CopyTtlInBuilder();
355
356         ActionBuilder AB1 = new ActionBuilder();
357         AB1.setAction(new CopyTtlInCaseBuilder().setCopyTtlIn(copyTtlInBuilder.build()).build());
358
359         actions.add(actionItem++, AB1.build());
360
361     }
362
363     private void MplsTtlActionData() {
364
365         SetMplsTtlActionBuilder setMplsTtlActionB = new SetMplsTtlActionBuilder();
366
367         setMplsTtlActionB.setMplsTtl((short) 10);
368         ActionBuilder AB1 = new ActionBuilder();
369         AB1.setAction(new SetMplsTtlActionCaseBuilder().setSetMplsTtlAction(setMplsTtlActionB.build()).build());
370
371
372         actions.add(actionItem++, AB1.build());
373
374         DecMplsTtlBuilder decMplsTtlB = new DecMplsTtlBuilder();
375
376         ActionBuilder AB = new ActionBuilder();
377         AB.setAction(new DecMplsTtlCaseBuilder().setDecMplsTtl(decMplsTtlB.build()).build());
378
379         actions.add(actionItem++, AB1.build());
380     }
381
382     private void vlanActionData() {
383         PushVlanActionBuilder pvB = new PushVlanActionBuilder();
384
385         pvB.setVlanId(new VlanId(10));
386
387         ActionBuilder AB1 = new ActionBuilder();
388         AB1.setAction(new PushVlanActionCaseBuilder().setPushVlanAction(pvB.build()).build());
389
390         actions.add(actionItem++, AB1.build());
391
392         PopVlanActionBuilder popVAB = new PopVlanActionBuilder();
393
394         ActionBuilder AB = new ActionBuilder();
395         AB.setAction(new PopVlanActionCaseBuilder().setPopVlanAction(popVAB.build()).build());
396
397         actions.add(actionItem++, AB.build());
398
399     }
400
401     private void mplsActionData() {
402
403         PushMplsActionBuilder pushMB = new PushMplsActionBuilder();
404         pushMB.setEthernetType(10);
405
406         ActionBuilder AB = new ActionBuilder();
407         AB.setAction(new PushMplsActionCaseBuilder().setPushMplsAction(pushMB.build()).build());
408
409         actions.add(actionItem++, AB.build());
410
411         PopMplsActionBuilder popMB = new PopMplsActionBuilder();
412         popMB.setEthernetType(10);
413
414         ActionBuilder AB1 = new ActionBuilder();
415         AB1.setAction(new PopMplsActionCaseBuilder().setPopMplsAction(popMB.build()).build());
416
417         actions.add(actionItem++, AB1.build());
418     }
419
420     private void setQueueActionData() {
421
422         SetQueueActionBuilder setQB = new SetQueueActionBuilder();
423         setQB.setQueue("99");
424
425         ActionBuilder AB1 = new ActionBuilder();
426         AB1.setAction(new SetQueueActionCaseBuilder().setSetQueueAction(setQB.build()).build());
427
428         actions.add(actionItem++, AB1.build());
429
430     }
431     
432     /**
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)}
434      * with OF-1.0, IPv4 
435      */
436     @Test
437     public void testSalToOFSetNwDst10v4() {
438         short version = 1;
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();
440         Address address;
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());
446     }
447
448     /**
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)}
450      * with OF-1.0, IPv6 
451      */
452     @Test
453     public void testSalToOFSetNwDst10v6() {
454         short version = 1;
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();
456         Address address;
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);
461     }
462     
463     
464     /**
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)}
466      * with OF-1.3, IPv4 
467      */
468     @Test
469     public void testSalToOFSetNwDst13v4() {
470         short version = 4;
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();
472         Address address;
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());
480     }
481     
482     
483     /**
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)}
485      * with OF-1.3, IPv6 
486      */
487     @Test
488     public void testSalToOFSetNwDst13v6() {
489         short version = 4;
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();
491         Address address;
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());
499     }
500     
501    
502     
503     /**
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)}
505      * with OF-1.0, IPv4 
506      */
507     @Test
508     public void testSalToOFSetNwSrc10v4() {
509         short version = 1;
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();
511         Address address;
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());
517     }
518
519     /**
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)}
521      * with OF-1.0, IPv6 
522      */
523     @Test
524     public void testSalToOFSetNwSrc10v6() {
525         short version = 1;
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();
527         Address address;
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);
532     }
533
534     /**
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)}
536      * with OF-1.3, IPv4 
537      */
538     @Test
539     public void testSalToOFSetNwSrc13v4() {
540         short version = 4;
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();
542         Address address;
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());
550     }
551
552     /**
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)}
554      * with OF-1.3, IPv6 
555      */
556     @Test
557     public void testSalToOFSetNwSrc13v6() {
558         short version = 4;
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();
560         Address address;
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());
568     }
569
570     private static SetNwDstActionCase provisionNwDstActionBuilder(Address address) {
571         SetNwDstAction nwDstAction = new SetNwDstActionBuilder().setAddress(address).build();
572         SetNwDstActionCase action = new SetNwDstActionCaseBuilder()
573             .setSetNwDstAction(nwDstAction)
574             .build(); 
575         return action;
576     }
577     
578     private static SetNwSrcActionCase provisionNwSrcActionBuilder(Address address) {
579         SetNwSrcAction nwSrcAction = new SetNwSrcActionBuilder().setAddress(address).build();
580         SetNwSrcActionCase action = new SetNwSrcActionCaseBuilder()
581             .setSetNwSrcAction(nwSrcAction)
582             .build(); 
583         return action;
584     }
585
586 }