* and is available at http://www.eclipse.org/legal/epl-v10.html\r
*/\r
\r
-package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor;\r
+package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action;\r
\r
import java.math.BigInteger;\r
import java.util.ArrayList;\r
+import java.util.Collections;\r
import java.util.List;\r
-\r
+import java.util.Optional;\r
import org.junit.Assert;\r
import org.junit.Test;\r
-import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;\r
-import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion;\r
+import org.opendaylight.openflowplugin.api.OFConstants;\r
import org.opendaylight.openflowplugin.extension.api.path.ActionPath;\r
+import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager;\r
+import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData;\r
+import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionResponseConvertorData;\r
import org.opendaylight.openflowplugin.openflow.md.util.OpenflowPortsUtil;\r
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix;\r
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Prefix;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.strip.vlan.action._case.StripVlanActionBuilder;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.address.address.Ipv4Builder;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.address.address.Ipv6Builder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.FlowBuilder;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanId;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.PushVlanCaseBuilder;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetFieldCaseBuilder;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetMplsTtlCaseBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetNwDstCaseBuilder;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetNwTtlCaseBuilder;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.SetQueueCaseBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.StripVlanCaseBuilder;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.group._case.GroupActionBuilder;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.output.action._case.OutputActionBuilder;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.pop.mpls._case.PopMplsActionBuilder;\r
*/\r
public class ActionConvertorV13Test {\r
/**\r
- * Test {@link ActionConvertor#toMDSalActions(List, OpenflowVersion, ActionPath)}\r
+ * Test {@link org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ActionResponseConvertor#convert(java.util.List, org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionResponseConvertorData)}}\r
*/\r
@Test\r
public void testToMDSalActions() {\r
List<Action> actions = new ArrayList<>();\r
- List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action\r
- .Action> mdSalActions = ActionConvertor.toMDSalActions(actions, OpenflowVersion.OF13,\r
- ActionPath.FLOWSSTATISTICSUPDATE_FLOWANDSTATISTICSMAPLIST_INSTRUCTIONS_INSTRUCTION_INSTRUCTION_APPLYACTIONSCASE_APPLYACTIONS_ACTION_ACTION);\r
+ ActionResponseConvertorData data = new ActionResponseConvertorData(OFConstants.OFP_VERSION_1_3);\r
+ data.setActionPath(ActionPath.FLOWSSTATISTICSUPDATE_FLOWANDSTATISTICSMAPLIST_INSTRUCTIONS_INSTRUCTION_INSTRUCTION_APPLYACTIONSCASE_APPLYACTIONS_ACTION_ACTION);\r
\r
- Assert.assertEquals("Wrong number of output actions", 0, mdSalActions.size());\r
+ Optional<List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action\r
+ .Action>> mdSalActions = ConvertorManager.getInstance().convert(actions, data);\r
+\r
+ Assert.assertEquals("Wrong number of output actions", 0, mdSalActions.orElse(Collections.emptyList()).size());\r
}\r
\r
/**\r
- * Test {@link ActionConvertor#toMDSalActions(List, OpenflowVersion, ActionPath)}\r
+ * Test {@link org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ActionConvertor#convert(java.util.List, org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData)}}\r
*/\r
@Test\r
public void testToMDSalActions2() {\r
actionBuilder.setActionChoice(new PopPbbCaseBuilder().build());\r
actions.add(actionBuilder.build());\r
\r
+ actionBuilder = new ActionBuilder();\r
+ actionBuilder.setActionChoice(new SetNwDstCaseBuilder().build());\r
+ actions.add(actionBuilder.build());\r
+\r
+ actionBuilder = new ActionBuilder();\r
+ actionBuilder.setActionChoice(new StripVlanCaseBuilder().build());\r
+ actions.add(actionBuilder.build());\r
+\r
+ ActionResponseConvertorData data = new ActionResponseConvertorData(OFConstants.OFP_VERSION_1_3);\r
+ data.setActionPath(ActionPath.FLOWSSTATISTICSUPDATE_FLOWANDSTATISTICSMAPLIST_INSTRUCTIONS_INSTRUCTION_INSTRUCTION_APPLYACTIONSCASE_APPLYACTIONS_ACTION_ACTION);\r
+\r
+ Optional<List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action\r
+ .Action>> mdSalActionsOptional = ConvertorManager.getInstance().convert(actions, data);\r
+\r
List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action\r
- .Action> mdSalActions = ActionConvertor.toMDSalActions(actions, OpenflowVersion.OF13,\r
- ActionPath.FLOWSSTATISTICSUPDATE_FLOWANDSTATISTICSMAPLIST_INSTRUCTIONS_INSTRUCTION_INSTRUCTION_APPLYACTIONSCASE_APPLYACTIONS_ACTION_ACTION);\r
+ .Action> mdSalActions = mdSalActionsOptional.orElse(Collections.emptyList());\r
\r
- Assert.assertEquals("Wrong number of output actions", 16, mdSalActions.size());\r
+ Assert.assertEquals("Wrong number of output actions", 18, mdSalActions.size());\r
org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action = mdSalActions.get(0);\r
Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight.action.types"\r
+ ".rev131112.action.action.OutputActionCase", action.getImplementedInterface().getName());\r
action = mdSalActions.get(15);\r
Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight.action.types"\r
+ ".rev131112.action.action.PopPbbActionCase", action.getImplementedInterface().getName());\r
+ action = mdSalActions.get(16);\r
+ Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight.action.types"\r
+ + ".rev131112.action.action.SetNwDstActionCase", action.getImplementedInterface().getName());\r
+ action = mdSalActions.get(17);\r
+ Assert.assertEquals("Wrong action type", "org.opendaylight.yang.gen.v1.urn.opendaylight.action.types"\r
+ + ".rev131112.action.action.PopVlanActionCase", action.getImplementedInterface().getName());\r
}\r
\r
/**\r
- * Test {@link ActionConvertor#getActions(java.util.List, short, java.math.BigInteger, org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.Flow)}\r
+ * Test {@link org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.ActionConvertor#convert(java.util.List, org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData)} }\r
*/\r
@Test\r
public void testGetActions() {\r
IpMatchBuilder ipMatchBld = new IpMatchBuilder().setIpProtocol((short) 6);\r
MatchBuilder matchBld = new MatchBuilder().setIpMatch(ipMatchBld.build());\r
FlowBuilder flowBld = new FlowBuilder().setMatch(matchBld.build());\r
+ Flow flow = flowBld.build();\r
+\r
+ ActionConvertorData data = new ActionConvertorData(OFConstants.OFP_VERSION_1_3);\r
+ data.setDatapathId(new BigInteger("42"));\r
+\r
+ if (flow.getMatch() != null && flow.getMatch().getIpMatch() != null) {\r
+ data.setIpProtocol(flow.getMatch().getIpMatch().getIpProtocol());\r
+ }\r
\r
- List<Action> actions = ActionConvertor.getActions(salActions, EncodeConstants.OF13_VERSION_ID, new BigInteger("42"), flowBld.build());\r
+ Optional<List<Action>> actionsOptional = ConvertorManager.getInstance().convert(salActions, data);\r
+ List<Action> actions = actionsOptional.orElse(Collections.emptyList());\r
\r
Assert.assertEquals("Wrong number of actions", 12, actions.size());\r
Action action = actions.get(0);\r