2 * Copyright (c) 2016, 2017 Cisco Systems, Inc. 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
9 package org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.action;
11 import java.util.ArrayList;
12 import java.util.List;
13 import org.junit.Assert;
14 import org.junit.Before;
15 import org.junit.Test;
16 import org.opendaylight.openflowplugin.extension.api.path.ActionPath;
17 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.Action;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.ActionBuilder;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.action.container.action.choice.ActionConntrack;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.action.container.action.choice.ActionConntrackBuilder;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofj.nx.action.conntrack.grouping.NxActionConntrackBuilder;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.flows.statistics.update.flow.and.statistics.map.list.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionConntrackNotifFlowsStatisticsUpdateApplyActionsCase;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.flows.statistics.update.flow.and.statistics.map.list.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionConntrackNotifFlowsStatisticsUpdateWriteActionsCase;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.get.flow.statistics.output.flow.and.statistics.map.list.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionConntrackNotifDirectStatisticsUpdateApplyActionsCase;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.get.flow.statistics.output.flow.and.statistics.map.list.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionConntrackNotifDirectStatisticsUpdateWriteActionsCase;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.group.desc.stats.updated.group.desc.stats.buckets.bucket.action.action.NxActionConntrackNotifGroupDescStatsUpdatedCase;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionConntrackNodesNodeTableFlowWriteActionsCase;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.write.actions._case.write.actions.action.action.NxActionConntrackNodesNodeTableFlowWriteActionsCaseBuilder;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.conntrack.grouping.NxConntrackBuilder;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.conntrack.grouping.nx.conntrack.CtActions;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.conntrack.grouping.nx.conntrack.CtActionsBuilder;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.ofpact.actions.ofpact.actions.NxActionNatCase;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.ofpact.actions.ofpact.actions.NxActionNatCaseBuilder;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.ofpact.actions.ofpact.actions.nx.action.nat._case.NxActionNat;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.ofpact.actions.ofpact.actions.nx.action.nat._case.NxActionNatBuilder;
39 * Test for {@link ConntrackConvertor}.
41 public class ConntrackConvertorTest {
43 private ConntrackConvertor conntrackConvertor;
46 public void setUp() throws Exception {
47 conntrackConvertor = new ConntrackConvertor();
51 public void testConvertToOfJava() throws Exception {
53 final NxActionNatBuilder nxActionNatBuilder = new NxActionNatBuilder()
56 .setIpAddressMin(new IpAddress("192.168.0.0".toCharArray()))
57 .setIpAddressMin(new IpAddress("192.168.10.0".toCharArray()))
60 final CtActionsBuilder ctActionsBuilder = new CtActionsBuilder().setOfpactActions(new NxActionNatCaseBuilder()
61 .setNxActionNat(nxActionNatBuilder.build()).build());
62 List<CtActions> ctAction = new ArrayList<>();
63 ctAction.add(ctActionsBuilder.build());
64 final NxConntrackBuilder nxConntrackBuilder = new NxConntrackBuilder()
67 .setRecircTable((short) 1)
69 .setCtActions(ctAction);
71 final NxActionConntrackNodesNodeTableFlowWriteActionsCaseBuilder nxActionConntrackBuilder =
72 new NxActionConntrackNodesNodeTableFlowWriteActionsCaseBuilder()
73 .setNxConntrack(nxConntrackBuilder.build());
75 final NxActionConntrackNodesNodeTableFlowWriteActionsCase actionsCase = nxActionConntrackBuilder.build();
76 final ActionConntrack actionConntrack = (ActionConntrack) conntrackConvertor.convert(actionsCase)
79 Assert.assertEquals(actionsCase.getNxConntrack().getConntrackZone(), actionConntrack.getNxActionConntrack()
81 Assert.assertEquals(actionsCase.getNxConntrack().getFlags(), actionConntrack.getNxActionConntrack().getFlags());
82 Assert.assertEquals(actionsCase.getNxConntrack().getRecircTable(), actionConntrack.getNxActionConntrack()
84 Assert.assertEquals(actionsCase.getNxConntrack().getZoneSrc(), actionConntrack.getNxActionConntrack()
87 NxActionNat natactionCase = ((NxActionNatCase) actionsCase.getNxConntrack().getCtActions().get(0)
88 .getOfpactActions()).getNxActionNat();
89 org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofpact.actions.ofpact.actions
90 .nx.action.nat._case.NxActionNat nataction = ((org.opendaylight
91 .yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofpact.actions.ofpact.actions
92 .NxActionNatCase) actionConntrack.getNxActionConntrack().getCtActions().get(0).getOfpactActions())
94 Assert.assertEquals(natactionCase.getFlags(), nataction.getFlags());
95 Assert.assertEquals(natactionCase.getRangePresent(), nataction.getRangePresent());
96 Assert.assertEquals(natactionCase.getIpAddressMin().getIpv4Address().getValue(), nataction.getIpAddressMin()
97 .getIpv4Address().getValue());
98 Assert.assertEquals(natactionCase.getIpAddressMin().getIpv4Address().getValue(), nataction.getIpAddressMin()
99 .getIpv4Address().getValue());
100 Assert.assertEquals(natactionCase.getPortMin(), nataction.getPortMin());
101 Assert.assertEquals(natactionCase.getPortMax(), nataction.getPortMax());
106 public void testConvertFromOfJava() throws Exception {
108 org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofpact.actions.ofpact.actions
109 .nx.action.nat._case.NxActionNatBuilder nxActionNatBuilder = new org.opendaylight.yang.gen.v1.urn
110 .opendaylight.openflowjava.nx.action.rev140421.ofpact.actions.ofpact.actions.nx.action.nat._case
111 .NxActionNatBuilder()
114 .setIpAddressMin(new IpAddress("192.168.0.0".toCharArray()))
115 .setIpAddressMax(new IpAddress("192.168.10.0".toCharArray()))
118 org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofj.nx.action.conntrack.grouping
119 .nx.action.conntrack.CtActionsBuilder ctActionsBuilder = new org.opendaylight.yang.gen.v1.urn.opendaylight
120 .openflowjava.nx.action.rev140421.ofj.nx.action.conntrack.grouping.nx.action.conntrack.CtActionsBuilder()
121 .setOfpactActions(new org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofpact
122 .actions.ofpact.actions.NxActionNatCaseBuilder().setNxActionNat(nxActionNatBuilder.build())
124 List<org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofj.nx.action.conntrack
125 .grouping.nx.action.conntrack.CtActions> ctActions = new ArrayList<>();
126 ctActions.add(ctActionsBuilder.build());
127 final NxActionConntrackBuilder nxActionConntrackBuilder = new NxActionConntrackBuilder()
130 .setRecircTable((short) 1)
132 .setCtActions(ctActions);
134 final ActionConntrackBuilder actionConntrackBuilder = new ActionConntrackBuilder()
135 .setNxActionConntrack(nxActionConntrackBuilder.build());
137 final ActionBuilder actionBuilder = new ActionBuilder()
138 .setActionChoice(actionConntrackBuilder.build());
140 final Action groupingAction = actionBuilder.build();
142 final org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action
143 = conntrackConvertor.convert(groupingAction, ActionPath.INVENTORY_FLOWNODE_TABLE_WRITE_ACTIONS);
144 final org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action1
145 = conntrackConvertor.convert(groupingAction, ActionPath.FLOWS_STATISTICS_UPDATE_WRITE_ACTIONS);
146 final org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action2
147 = conntrackConvertor.convert(groupingAction, ActionPath.FLOWS_STATISTICS_UPDATE_APPLY_ACTIONS);
148 final org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action3
149 = conntrackConvertor.convert(groupingAction, ActionPath.GROUP_DESC_STATS_UPDATED_BUCKET_ACTION);
150 final org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action4
151 = conntrackConvertor.convert(groupingAction, ActionPath.FLOWS_STATISTICS_RPC_WRITE_ACTIONS);
152 final org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action5
153 = conntrackConvertor.convert(groupingAction, ActionPath.FLOWS_STATISTICS_RPC_APPLY_ACTIONS);
155 Assert.assertEquals(1, ((NxActionConntrackNodesNodeTableFlowWriteActionsCase) action).getNxConntrack()
156 .getConntrackZone().longValue());
157 Assert.assertEquals(1L, ((NxActionConntrackNodesNodeTableFlowWriteActionsCase) action).getNxConntrack()
158 .getZoneSrc().longValue());
159 Assert.assertEquals(1, ((NxActionConntrackNodesNodeTableFlowWriteActionsCase) action).getNxConntrack()
160 .getRecircTable().intValue());
161 Assert.assertEquals(1, ((NxActionConntrackNodesNodeTableFlowWriteActionsCase) action).getNxConntrack()
162 .getFlags().intValue());
164 NxActionNat natActionCase = ((NxActionNatCase)((NxActionConntrackNodesNodeTableFlowWriteActionsCase)action)
165 .getNxConntrack().getCtActions().get(0).getOfpactActions()).getNxActionNat();
166 Assert.assertEquals(1, natActionCase.getFlags().shortValue());
167 Assert.assertEquals(2, natActionCase.getRangePresent().intValue());
168 Assert.assertEquals("192.168.0.0", natActionCase.getIpAddressMin().getIpv4Address().getValue());
169 Assert.assertEquals("192.168.10.0", natActionCase.getIpAddressMax().getIpv4Address().getValue());
170 Assert.assertEquals(3000, natActionCase.getPortMin().shortValue());
171 Assert.assertEquals(4000, natActionCase.getPortMax().shortValue());
173 Assert.assertEquals(1, ((NxActionConntrackNotifFlowsStatisticsUpdateWriteActionsCase) action1)
174 .getNxConntrack().getConntrackZone().longValue());
175 Assert.assertEquals(1L, ((NxActionConntrackNotifFlowsStatisticsUpdateWriteActionsCase) action1)
176 .getNxConntrack().getZoneSrc().longValue());
177 Assert.assertEquals(1, ((NxActionConntrackNotifFlowsStatisticsUpdateWriteActionsCase) action1)
178 .getNxConntrack().getRecircTable().intValue());
179 Assert.assertEquals(1, ((NxActionConntrackNotifFlowsStatisticsUpdateWriteActionsCase) action1)
180 .getNxConntrack().getFlags().intValue());
182 NxActionNat natActionCase1 = ((NxActionNatCase)((NxActionConntrackNodesNodeTableFlowWriteActionsCase)action)
183 .getNxConntrack().getCtActions().get(0).getOfpactActions()).getNxActionNat();
184 Assert.assertEquals(1, natActionCase1.getFlags().shortValue());
185 Assert.assertEquals(2, natActionCase1.getRangePresent().intValue());
186 Assert.assertEquals("192.168.0.0", natActionCase1.getIpAddressMin().getIpv4Address().getValue());
187 Assert.assertEquals("192.168.10.0", natActionCase1.getIpAddressMax().getIpv4Address().getValue());
188 Assert.assertEquals(3000, natActionCase1.getPortMin().shortValue());
189 Assert.assertEquals(4000, natActionCase1.getPortMax().shortValue());
191 Assert.assertEquals(1, ((NxActionConntrackNotifFlowsStatisticsUpdateApplyActionsCase) action2)
192 .getNxConntrack().getConntrackZone().longValue());
193 Assert.assertEquals(1L, ((NxActionConntrackNotifFlowsStatisticsUpdateApplyActionsCase) action2)
194 .getNxConntrack().getZoneSrc().longValue());
195 Assert.assertEquals(1, ((NxActionConntrackNotifFlowsStatisticsUpdateApplyActionsCase) action2)
196 .getNxConntrack().getRecircTable().intValue());
197 Assert.assertEquals(1, ((NxActionConntrackNotifFlowsStatisticsUpdateApplyActionsCase) action2)
198 .getNxConntrack().getFlags().intValue());
200 NxActionNat natActionCase2 = ((NxActionNatCase)((NxActionConntrackNodesNodeTableFlowWriteActionsCase)action)
201 .getNxConntrack().getCtActions().get(0).getOfpactActions()).getNxActionNat();
202 Assert.assertEquals(1, natActionCase2.getFlags().shortValue());
203 Assert.assertEquals(2, natActionCase2.getRangePresent().intValue());
204 Assert.assertEquals("192.168.0.0", natActionCase2.getIpAddressMin().getIpv4Address().getValue());
205 Assert.assertEquals("192.168.10.0", natActionCase2.getIpAddressMax().getIpv4Address().getValue());
206 Assert.assertEquals(3000, natActionCase2.getPortMin().shortValue());
207 Assert.assertEquals(4000, natActionCase2.getPortMax().shortValue());
209 NxActionNat natActionCase3 = ((NxActionNatCase)((NxActionConntrackNodesNodeTableFlowWriteActionsCase)action)
210 .getNxConntrack().getCtActions().get(0).getOfpactActions()).getNxActionNat();
211 Assert.assertEquals(1, natActionCase3.getFlags().shortValue());
212 Assert.assertEquals(2, natActionCase3.getRangePresent().intValue());
213 Assert.assertEquals("192.168.0.0", natActionCase3.getIpAddressMin().getIpv4Address().getValue());
214 Assert.assertEquals("192.168.10.0", natActionCase3.getIpAddressMax().getIpv4Address().getValue());
215 Assert.assertEquals(3000, natActionCase3.getPortMin().shortValue());
216 Assert.assertEquals(4000, natActionCase3.getPortMax().shortValue());
218 Assert.assertEquals(1, ((NxActionConntrackNotifGroupDescStatsUpdatedCase) action3).getNxConntrack()
219 .getConntrackZone().longValue());
220 Assert.assertEquals(1L, ((NxActionConntrackNotifGroupDescStatsUpdatedCase) action3).getNxConntrack()
221 .getZoneSrc().longValue());
222 Assert.assertEquals(1, ((NxActionConntrackNotifGroupDescStatsUpdatedCase) action3).getNxConntrack()
223 .getRecircTable().intValue());
224 Assert.assertEquals(1, ((NxActionConntrackNotifGroupDescStatsUpdatedCase) action3).getNxConntrack()
225 .getFlags().intValue());
227 Assert.assertEquals(1, ((NxActionConntrackNotifDirectStatisticsUpdateWriteActionsCase) action4)
228 .getNxConntrack().getConntrackZone().longValue());
229 Assert.assertEquals(1L, ((NxActionConntrackNotifDirectStatisticsUpdateWriteActionsCase) action4)
230 .getNxConntrack().getZoneSrc().longValue());
231 Assert.assertEquals(1, ((NxActionConntrackNotifDirectStatisticsUpdateWriteActionsCase) action4)
232 .getNxConntrack().getRecircTable().intValue());
233 Assert.assertEquals(1, ((NxActionConntrackNotifDirectStatisticsUpdateWriteActionsCase) action4)
234 .getNxConntrack().getFlags().intValue());
236 Assert.assertEquals(1, ((NxActionConntrackNotifDirectStatisticsUpdateApplyActionsCase) action5).getNxConntrack()
237 .getConntrackZone().longValue());
238 Assert.assertEquals(1L, ((NxActionConntrackNotifDirectStatisticsUpdateApplyActionsCase) action5)
239 .getNxConntrack().getZoneSrc().longValue());
240 Assert.assertEquals(1, ((NxActionConntrackNotifDirectStatisticsUpdateApplyActionsCase) action5).getNxConntrack()
241 .getRecircTable().intValue());
242 Assert.assertEquals(1, ((NxActionConntrackNotifDirectStatisticsUpdateApplyActionsCase) action5).getNxConntrack()
243 .getFlags().intValue());