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
8 package org.opendaylight.openflowplugin.extension.vendor.nicira.convertor.action;
10 import java.util.ArrayList;
11 import java.util.List;
12 import org.junit.Assert;
13 import org.junit.Before;
14 import org.junit.Test;
15 import org.opendaylight.openflowplugin.extension.api.path.ActionPath;
16 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressBuilder;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.Action;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.ActionBuilder;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.action.container.action.choice.ActionConntrack;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.action.container.action.choice.ActionConntrackBuilder;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofj.nx.action.conntrack.grouping.NxActionConntrackBuilder;
22 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;
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.write.actions._case.write.actions.action.action.NxActionConntrackNotifFlowsStatisticsUpdateWriteActionsCase;
24 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;
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.write.actions._case.write.actions.action.action.NxActionConntrackNotifDirectStatisticsUpdateWriteActionsCase;
26 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;
27 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;
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.NxActionConntrackNodesNodeTableFlowWriteActionsCaseBuilder;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.conntrack.grouping.NxConntrackBuilder;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.conntrack.grouping.nx.conntrack.CtActions;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.conntrack.grouping.nx.conntrack.CtActionsBuilder;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.ofpact.actions.ofpact.actions.NxActionNatCase;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.ofpact.actions.ofpact.actions.NxActionNatCaseBuilder;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.ofpact.actions.ofpact.actions.nx.action.nat._case.NxActionNat;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.ofpact.actions.ofpact.actions.nx.action.nat._case.NxActionNatBuilder;
38 * Test for {@link ConntrackConvertor}.
40 public class ConntrackConvertorTest {
42 private ConntrackConvertor conntrackConvertor;
46 conntrackConvertor = new ConntrackConvertor();
50 public void testConvertToOfJava() {
52 final NxActionNatBuilder nxActionNatBuilder = new NxActionNatBuilder()
55 .setIpAddressMin(IpAddressBuilder.getDefaultInstance("192.168.0.0"))
56 .setIpAddressMin(IpAddressBuilder.getDefaultInstance("192.168.10.0"))
59 final CtActionsBuilder ctActionsBuilder = new CtActionsBuilder().setOfpactActions(new NxActionNatCaseBuilder()
60 .setNxActionNat(nxActionNatBuilder.build()).build());
61 List<CtActions> ctAction = new ArrayList<>();
62 ctAction.add(ctActionsBuilder.build());
63 final NxConntrackBuilder nxConntrackBuilder = new NxConntrackBuilder()
66 .setRecircTable((short) 1)
68 .setCtActions(ctAction);
70 final NxActionConntrackNodesNodeTableFlowWriteActionsCaseBuilder nxActionConntrackBuilder =
71 new NxActionConntrackNodesNodeTableFlowWriteActionsCaseBuilder()
72 .setNxConntrack(nxConntrackBuilder.build());
74 final NxActionConntrackNodesNodeTableFlowWriteActionsCase actionsCase = nxActionConntrackBuilder.build();
75 final ActionConntrack actionConntrack = (ActionConntrack) conntrackConvertor.convert(actionsCase)
78 Assert.assertEquals(actionsCase.getNxConntrack().getConntrackZone(), actionConntrack.getNxActionConntrack()
80 Assert.assertEquals(actionsCase.getNxConntrack().getFlags(), actionConntrack.getNxActionConntrack().getFlags());
81 Assert.assertEquals(actionsCase.getNxConntrack().getRecircTable(), actionConntrack.getNxActionConntrack()
83 Assert.assertEquals(actionsCase.getNxConntrack().getZoneSrc(), actionConntrack.getNxActionConntrack()
86 NxActionNat natactionCase = ((NxActionNatCase) actionsCase.getNxConntrack().getCtActions().get(0)
87 .getOfpactActions()).getNxActionNat();
88 org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofpact.actions.ofpact.actions
89 .nx.action.nat._case.NxActionNat nataction = ((org.opendaylight
90 .yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofpact.actions.ofpact.actions
91 .NxActionNatCase) actionConntrack.getNxActionConntrack().getCtActions().get(0).getOfpactActions())
93 Assert.assertEquals(natactionCase.getFlags(), nataction.getFlags());
94 Assert.assertEquals(natactionCase.getRangePresent(), nataction.getRangePresent());
95 Assert.assertEquals(natactionCase.getIpAddressMin().getIpv4Address().getValue(), nataction.getIpAddressMin()
96 .getIpv4Address().getValue());
97 Assert.assertEquals(natactionCase.getIpAddressMin().getIpv4Address().getValue(), nataction.getIpAddressMin()
98 .getIpv4Address().getValue());
99 Assert.assertEquals(natactionCase.getPortMin(), nataction.getPortMin());
100 Assert.assertEquals(natactionCase.getPortMax(), nataction.getPortMax());
105 public void testConvertFromOfJava() {
107 org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofpact.actions.ofpact.actions
108 .nx.action.nat._case.NxActionNatBuilder nxActionNatBuilder = new org.opendaylight.yang.gen.v1.urn
109 .opendaylight.openflowjava.nx.action.rev140421.ofpact.actions.ofpact.actions.nx.action.nat._case
110 .NxActionNatBuilder()
113 .setIpAddressMin(IpAddressBuilder.getDefaultInstance("192.168.0.0"))
114 .setIpAddressMax(IpAddressBuilder.getDefaultInstance("192.168.10.0"))
117 org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofj.nx.action.conntrack.grouping
118 .nx.action.conntrack.CtActionsBuilder ctActionsBuilder = new org.opendaylight.yang.gen.v1.urn.opendaylight
119 .openflowjava.nx.action.rev140421.ofj.nx.action.conntrack.grouping.nx.action.conntrack.CtActionsBuilder()
120 .setOfpactActions(new org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofpact
121 .actions.ofpact.actions.NxActionNatCaseBuilder().setNxActionNat(nxActionNatBuilder.build())
123 List<org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofj.nx.action.conntrack
124 .grouping.nx.action.conntrack.CtActions> ctActions = new ArrayList<>();
125 ctActions.add(ctActionsBuilder.build());
126 final NxActionConntrackBuilder nxActionConntrackBuilder = new NxActionConntrackBuilder()
129 .setRecircTable((short) 1)
131 .setCtActions(ctActions);
133 final ActionConntrackBuilder actionConntrackBuilder = new ActionConntrackBuilder()
134 .setNxActionConntrack(nxActionConntrackBuilder.build());
136 final ActionBuilder actionBuilder = new ActionBuilder()
137 .setActionChoice(actionConntrackBuilder.build());
139 final Action groupingAction = actionBuilder.build();
141 final org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action
142 = conntrackConvertor.convert(groupingAction, ActionPath.INVENTORY_FLOWNODE_TABLE_WRITE_ACTIONS);
143 final org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action1
144 = conntrackConvertor.convert(groupingAction, ActionPath.FLOWS_STATISTICS_UPDATE_WRITE_ACTIONS);
145 final org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action2
146 = conntrackConvertor.convert(groupingAction, ActionPath.FLOWS_STATISTICS_UPDATE_APPLY_ACTIONS);
147 final org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action3
148 = conntrackConvertor.convert(groupingAction, ActionPath.GROUP_DESC_STATS_UPDATED_BUCKET_ACTION);
149 final org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action4
150 = conntrackConvertor.convert(groupingAction, ActionPath.FLOWS_STATISTICS_RPC_WRITE_ACTIONS);
151 final org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action5
152 = conntrackConvertor.convert(groupingAction, ActionPath.FLOWS_STATISTICS_RPC_APPLY_ACTIONS);
154 Assert.assertEquals(1, ((NxActionConntrackNodesNodeTableFlowWriteActionsCase) action).getNxConntrack()
155 .getConntrackZone().longValue());
156 Assert.assertEquals(1L, ((NxActionConntrackNodesNodeTableFlowWriteActionsCase) action).getNxConntrack()
157 .getZoneSrc().longValue());
158 Assert.assertEquals(1, ((NxActionConntrackNodesNodeTableFlowWriteActionsCase) action).getNxConntrack()
159 .getRecircTable().intValue());
160 Assert.assertEquals(1, ((NxActionConntrackNodesNodeTableFlowWriteActionsCase) action).getNxConntrack()
161 .getFlags().intValue());
163 NxActionNat natActionCase = ((NxActionNatCase)((NxActionConntrackNodesNodeTableFlowWriteActionsCase)action)
164 .getNxConntrack().getCtActions().get(0).getOfpactActions()).getNxActionNat();
165 Assert.assertEquals(1, natActionCase.getFlags().shortValue());
166 Assert.assertEquals(2, natActionCase.getRangePresent().intValue());
167 Assert.assertEquals("192.168.0.0", natActionCase.getIpAddressMin().getIpv4Address().getValue());
168 Assert.assertEquals("192.168.10.0", natActionCase.getIpAddressMax().getIpv4Address().getValue());
169 Assert.assertEquals(3000, natActionCase.getPortMin().shortValue());
170 Assert.assertEquals(4000, natActionCase.getPortMax().shortValue());
172 Assert.assertEquals(1, ((NxActionConntrackNotifFlowsStatisticsUpdateWriteActionsCase) action1)
173 .getNxConntrack().getConntrackZone().longValue());
174 Assert.assertEquals(1L, ((NxActionConntrackNotifFlowsStatisticsUpdateWriteActionsCase) action1)
175 .getNxConntrack().getZoneSrc().longValue());
176 Assert.assertEquals(1, ((NxActionConntrackNotifFlowsStatisticsUpdateWriteActionsCase) action1)
177 .getNxConntrack().getRecircTable().intValue());
178 Assert.assertEquals(1, ((NxActionConntrackNotifFlowsStatisticsUpdateWriteActionsCase) action1)
179 .getNxConntrack().getFlags().intValue());
181 NxActionNat natActionCase1 = ((NxActionNatCase)((NxActionConntrackNodesNodeTableFlowWriteActionsCase)action)
182 .getNxConntrack().getCtActions().get(0).getOfpactActions()).getNxActionNat();
183 Assert.assertEquals(1, natActionCase1.getFlags().shortValue());
184 Assert.assertEquals(2, natActionCase1.getRangePresent().intValue());
185 Assert.assertEquals("192.168.0.0", natActionCase1.getIpAddressMin().getIpv4Address().getValue());
186 Assert.assertEquals("192.168.10.0", natActionCase1.getIpAddressMax().getIpv4Address().getValue());
187 Assert.assertEquals(3000, natActionCase1.getPortMin().shortValue());
188 Assert.assertEquals(4000, natActionCase1.getPortMax().shortValue());
190 Assert.assertEquals(1, ((NxActionConntrackNotifFlowsStatisticsUpdateApplyActionsCase) action2)
191 .getNxConntrack().getConntrackZone().longValue());
192 Assert.assertEquals(1L, ((NxActionConntrackNotifFlowsStatisticsUpdateApplyActionsCase) action2)
193 .getNxConntrack().getZoneSrc().longValue());
194 Assert.assertEquals(1, ((NxActionConntrackNotifFlowsStatisticsUpdateApplyActionsCase) action2)
195 .getNxConntrack().getRecircTable().intValue());
196 Assert.assertEquals(1, ((NxActionConntrackNotifFlowsStatisticsUpdateApplyActionsCase) action2)
197 .getNxConntrack().getFlags().intValue());
199 NxActionNat natActionCase2 = ((NxActionNatCase)((NxActionConntrackNodesNodeTableFlowWriteActionsCase)action)
200 .getNxConntrack().getCtActions().get(0).getOfpactActions()).getNxActionNat();
201 Assert.assertEquals(1, natActionCase2.getFlags().shortValue());
202 Assert.assertEquals(2, natActionCase2.getRangePresent().intValue());
203 Assert.assertEquals("192.168.0.0", natActionCase2.getIpAddressMin().getIpv4Address().getValue());
204 Assert.assertEquals("192.168.10.0", natActionCase2.getIpAddressMax().getIpv4Address().getValue());
205 Assert.assertEquals(3000, natActionCase2.getPortMin().shortValue());
206 Assert.assertEquals(4000, natActionCase2.getPortMax().shortValue());
208 NxActionNat natActionCase3 = ((NxActionNatCase)((NxActionConntrackNodesNodeTableFlowWriteActionsCase)action)
209 .getNxConntrack().getCtActions().get(0).getOfpactActions()).getNxActionNat();
210 Assert.assertEquals(1, natActionCase3.getFlags().shortValue());
211 Assert.assertEquals(2, natActionCase3.getRangePresent().intValue());
212 Assert.assertEquals("192.168.0.0", natActionCase3.getIpAddressMin().getIpv4Address().getValue());
213 Assert.assertEquals("192.168.10.0", natActionCase3.getIpAddressMax().getIpv4Address().getValue());
214 Assert.assertEquals(3000, natActionCase3.getPortMin().shortValue());
215 Assert.assertEquals(4000, natActionCase3.getPortMax().shortValue());
217 Assert.assertEquals(1, ((NxActionConntrackNotifGroupDescStatsUpdatedCase) action3).getNxConntrack()
218 .getConntrackZone().longValue());
219 Assert.assertEquals(1L, ((NxActionConntrackNotifGroupDescStatsUpdatedCase) action3).getNxConntrack()
220 .getZoneSrc().longValue());
221 Assert.assertEquals(1, ((NxActionConntrackNotifGroupDescStatsUpdatedCase) action3).getNxConntrack()
222 .getRecircTable().intValue());
223 Assert.assertEquals(1, ((NxActionConntrackNotifGroupDescStatsUpdatedCase) action3).getNxConntrack()
224 .getFlags().intValue());
226 Assert.assertEquals(1, ((NxActionConntrackNotifDirectStatisticsUpdateWriteActionsCase) action4)
227 .getNxConntrack().getConntrackZone().longValue());
228 Assert.assertEquals(1L, ((NxActionConntrackNotifDirectStatisticsUpdateWriteActionsCase) action4)
229 .getNxConntrack().getZoneSrc().longValue());
230 Assert.assertEquals(1, ((NxActionConntrackNotifDirectStatisticsUpdateWriteActionsCase) action4)
231 .getNxConntrack().getRecircTable().intValue());
232 Assert.assertEquals(1, ((NxActionConntrackNotifDirectStatisticsUpdateWriteActionsCase) action4)
233 .getNxConntrack().getFlags().intValue());
235 Assert.assertEquals(1, ((NxActionConntrackNotifDirectStatisticsUpdateApplyActionsCase) action5).getNxConntrack()
236 .getConntrackZone().longValue());
237 Assert.assertEquals(1L, ((NxActionConntrackNotifDirectStatisticsUpdateApplyActionsCase) action5)
238 .getNxConntrack().getZoneSrc().longValue());
239 Assert.assertEquals(1, ((NxActionConntrackNotifDirectStatisticsUpdateApplyActionsCase) action5).getNxConntrack()
240 .getRecircTable().intValue());
241 Assert.assertEquals(1, ((NxActionConntrackNotifDirectStatisticsUpdateApplyActionsCase) action5).getNxConntrack()
242 .getFlags().intValue());