-/*\r
- * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved.\r
- *\r
- * This program and the accompanying materials are made available under the\r
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
- * 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
-\r
-import java.math.BigInteger;\r
-import java.util.ArrayList;\r
-import java.util.Collections;\r
-import java.util.List;\r
-import java.util.Optional;\r
-import org.junit.Assert;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;\r
-import org.opendaylight.openflowplugin.api.OFConstants;\r
-import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion;\r
-import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData;\r
-import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.PacketOutConvertorData;\r
-import org.opendaylight.openflowplugin.openflow.md.util.InventoryDataServiceUtil;\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.Uri;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.OutputActionCaseBuilder;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.output.action._case.OutputActionBuilder;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionKey;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.OutputPortValues;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorRef;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorKey;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.Action;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.ActionBuilder;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortNumber;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PacketOutInput;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.ConnectionCookie;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.TransmitPacketInput;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.TransmitPacketInputBuilder;\r
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
-\r
-/**\r
- * Created by Jakub Toth jatoth@cisco.com on 9/23/14.\r
- */\r
-\r
-public class PacketOutConvertorTest {\r
-\r
- private ConvertorManager convertorManager;\r
-\r
- @Before\r
- public void setUp() {\r
- OpenflowPortsUtil.init();\r
- convertorManager = ConvertorManagerFactory.createDefaultManager();\r
- }\r
-\r
- /**\r
- * Test for {@link PacketOutConvertor} with null parameters\r
- */\r
- @Test\r
- public void toPacketOutInputAllParmNullTest() {\r
-\r
- TransmitPacketInputBuilder transmitPacketInputBuilder = new TransmitPacketInputBuilder();\r
-\r
- Long bufferId = null;\r
-\r
- String NODE_ID = "0";\r
- String port = "0";\r
-\r
- NodeRef ref = createNodeRef(NODE_ID);\r
- NodeConnectorKey nodeConnKey = PacketOutConvertorTest.createNodeConnKey(NODE_ID, port);\r
- NodeConnectorRef nEgressConfRef = new NodeConnectorRef(\r
- createNodeConnRef(NODE_ID, nodeConnKey));\r
-\r
- transmitPacketInputBuilder.setBufferId(bufferId);\r
- transmitPacketInputBuilder.setConnectionCookie(null);\r
- transmitPacketInputBuilder.setAction(null);\r
- transmitPacketInputBuilder.setNode(ref);\r
- transmitPacketInputBuilder.setPayload(null);\r
- transmitPacketInputBuilder.setEgress(nEgressConfRef);\r
- transmitPacketInputBuilder.setIngress(null);\r
- TransmitPacketInput transmitPacketInput = transmitPacketInputBuilder\r
- .build();\r
-\r
- Short version = (short) 0x04;\r
- Long xid = null;\r
- PacketOutConvertorData data = new PacketOutConvertorData(version);\r
- PacketOutInput message = convert(transmitPacketInput, data);\r
-\r
- //FIXME : this has to be fixed along with actions changed in openflowjava\r
-\r
- Assert.assertEquals(buildActionForNullTransmitPacketInputAction(nodeConnKey, version), message.getAction());\r
-\r
- Assert.assertEquals(OFConstants.OFP_NO_BUFFER, message.getBufferId());\r
- Assert.assertEquals(new PortNumber(0xfffffffdL), message.getInPort());\r
- Assert.assertEquals(version, message.getVersion());\r
- Assert.assertEquals(xid, message.getXid());\r
- Assert.assertArrayEquals(transmitPacketInput.getPayload(), message.getData());\r
- }\r
-\r
- /**\r
- * Test for PacketOutConvertor\r
- */\r
- @Test\r
- public void toPacketOutInputAllParmTest() {\r
- TransmitPacketInputBuilder transmitPacketInputBuilder = new TransmitPacketInputBuilder();\r
-\r
- List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action> actionList = new ArrayList<>();\r
- org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder ab = new org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder();\r
-\r
- OutputActionBuilder output = new OutputActionBuilder();\r
- output.setMaxLength(OFConstants.OFPCML_NO_BUFFER);\r
- Uri value = new Uri(OutputPortValues.CONTROLLER.toString());\r
- output.setOutputNodeConnector(value);\r
- ab.setAction(new OutputActionCaseBuilder().setOutputAction(\r
- output.build()).build());\r
- ab.setOrder(0);\r
- ab.setKey(new ActionKey(0));\r
- actionList.add(ab.build());\r
-\r
- Long bufferId = 0xfL;\r
-\r
- Long valueForCookie = 0xeL;\r
- ConnectionCookie connCook = new ConnectionCookie(valueForCookie);\r
-\r
- String NODE_ID = "node:1";\r
-\r
- NodeRef ref = createNodeRef(NODE_ID);\r
-\r
- String portO = "0xfffffffd";\r
- NodeConnectorKey nEgrConKey = PacketOutConvertorTest.createNodeConnKey(NODE_ID, portO);\r
- NodeConnectorRef nEgressConfRef = new NodeConnectorRef(\r
- createNodeConnRef(NODE_ID, nEgrConKey));\r
-\r
- String inPort = "2";\r
- NodeConnectorKey nIngrConKey = PacketOutConvertorTest.createNodeConnKey(NODE_ID, inPort);\r
- NodeConnectorRef nIngressConRef = new NodeConnectorRef(\r
- createNodeConnRef(NODE_ID, nIngrConKey));\r
-\r
- String _string = new String("sendOutputMsg_TEST");\r
- byte[] msg = _string.getBytes();\r
-\r
- byte[] payload = msg;\r
-\r
- transmitPacketInputBuilder.setAction(actionList);\r
- transmitPacketInputBuilder.setBufferId(bufferId);\r
- transmitPacketInputBuilder.setConnectionCookie(connCook);\r
- transmitPacketInputBuilder.setEgress(nEgressConfRef);\r
- transmitPacketInputBuilder.setIngress(nIngressConRef);\r
- transmitPacketInputBuilder.setNode(ref);\r
- transmitPacketInputBuilder.setPayload(payload);\r
-\r
- TransmitPacketInput transmitPacketInput = transmitPacketInputBuilder\r
- .build();\r
-\r
- short version = (short) 0x04;\r
- byte[] datapathIdByte = new byte[EncodeConstants.SIZE_OF_LONG_IN_BYTES];\r
- for (int i = 0; i < datapathIdByte.length; i++) {\r
- datapathIdByte[i] = 1;\r
- }\r
- BigInteger datapathId = new BigInteger(1, datapathIdByte);\r
- Long xid = 0xfffffL;\r
-\r
- OpenflowPortsUtil.init();\r
-\r
- PacketOutConvertorData data = new PacketOutConvertorData(version);\r
- data.setXid(xid);\r
- data.setDatapathId(datapathId);\r
- PacketOutInput message = convert(transmitPacketInput, data);\r
-\r
- Assert.assertEquals(transmitPacketInput.getBufferId(),\r
- message.getBufferId());\r
- Assert.assertEquals("PortNumber [_value=" + inPort + "]", message\r
- .getInPort().toString());\r
- Assert.assertEquals((Object) version,\r
- Short.valueOf(message.getVersion()));\r
- Assert.assertEquals(xid, message.getXid());\r
-\r
- ActionConvertorData actionConvertorData = new ActionConvertorData(version);\r
- actionConvertorData.setDatapathId(datapathId);\r
-\r
- Optional<List<Action>> actionsOptional = convertorManager.convert(\r
- actionList, actionConvertorData);\r
-\r
- List<Action> actions = actionsOptional.orElse(Collections.emptyList());\r
- Assert.assertEquals(actions, message.getAction());\r
- Assert.assertArrayEquals(transmitPacketInput.getPayload(), message.getData());\r
- }\r
-\r
- /**\r
- * create action\r
- *\r
- * @param nConKey\r
- * @param version\r
- * @return\r
- */\r
- private static List<Action> buildActionForNullTransmitPacketInputAction(\r
- final NodeConnectorKey nConKey, final short version) {\r
-\r
- PortNumber outPort = getPortNumber(nConKey, version);\r
- List<Action> actions = new ArrayList<>();\r
- ActionBuilder aBuild = new ActionBuilder();\r
-\r
- org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.OutputActionCaseBuilder outputActionCaseBuilder =\r
- new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.OutputActionCaseBuilder();\r
-\r
- org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.output.action._case.OutputActionBuilder outputActionBuilder =\r
- new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.output.action._case.OutputActionBuilder();\r
-\r
- outputActionBuilder.setPort(outPort);\r
- outputActionBuilder.setMaxLength(0xffff);\r
- outputActionCaseBuilder.setOutputAction(outputActionBuilder.build());\r
- aBuild.setActionChoice(outputActionCaseBuilder.build());\r
- actions.add(aBuild.build());\r
- return actions;\r
- }\r
-\r
- /**\r
- * create PortNumber\r
- *\r
- * @param nConKey\r
- * @param ofVersion\r
- * @return\r
- */\r
- private static PortNumber getPortNumber(final NodeConnectorKey nConKey,\r
- final Short ofVersion) {\r
- Long port = InventoryDataServiceUtil.portNumberfromNodeConnectorId(\r
- OpenflowVersion.get(ofVersion), nConKey.getId());\r
- return new PortNumber(port);\r
- }\r
-\r
- /**\r
- * create NodeConnectorRef\r
- *\r
- * @param nodeId\r
- * @param nConKey\r
- * @return\r
- */\r
- private static NodeConnectorRef createNodeConnRef(final String nodeId,\r
- final NodeConnectorKey nConKey) {\r
-\r
- InstanceIdentifier<NodeConnector> path = InstanceIdentifier\r
- .<Nodes>builder(Nodes.class)\r
- .<Node, NodeKey>child(Node.class,\r
- new NodeKey(new NodeId(nodeId)))\r
- .<NodeConnector, NodeConnectorKey>child(NodeConnector.class,\r
- nConKey).build();\r
-\r
- return new NodeConnectorRef(path);\r
- }\r
-\r
- /**\r
- * create NodeConnectorKey\r
- *\r
- * @param nodeId\r
- * @param port\r
- * @return\r
- */\r
- private static NodeConnectorKey createNodeConnKey(final String nodeId,\r
- final String port) {\r
- StringBuilder sBuild = new StringBuilder(nodeId).append(':').append(\r
- port);\r
-\r
- return new NodeConnectorKey(new NodeConnectorId(sBuild.toString()));\r
- }\r
-\r
- /**\r
- * create NodeRef\r
- *\r
- * @param nodeId\r
- * @return\r
- */\r
- private static NodeRef createNodeRef(final String nodeId) {\r
- NodeKey key = new NodeKey(new NodeId(nodeId));\r
- InstanceIdentifier<Node> path = InstanceIdentifier\r
- .<Nodes>builder(Nodes.class)\r
- .<Node, NodeKey>child(Node.class, key).build();\r
- return new NodeRef(path);\r
- }\r
-\r
- private PacketOutInput convert(TransmitPacketInput transmitPacketInput, PacketOutConvertorData data) {\r
- Optional<PacketOutInput> messageOptional = convertorManager.convert(transmitPacketInput, data);\r
- return messageOptional.orElse(PacketOutConvertor.defaultResult(data.getVersion()));\r
- }\r
-}\r
+/*
+ * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor;
+
+import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
+import org.opendaylight.openflowplugin.api.OFConstants;
+import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion;
+import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.action.data.ActionConvertorData;
+import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.XidConvertorData;
+import org.opendaylight.openflowplugin.openflow.md.util.InventoryDataServiceUtil;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.OutputActionCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.output.action._case.OutputActionBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.OutputPortValues;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorRef;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.Action;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.ActionBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortNumber;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PacketOutInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.ConnectionCookie;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.TransmitPacketInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.TransmitPacketInputBuilder;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.common.Uint16;
+import org.opendaylight.yangtools.yang.common.Uint32;
+import org.opendaylight.yangtools.yang.common.Uint64;
+import org.opendaylight.yangtools.yang.common.Uint8;
+
+/**
+ * Created by Jakub Toth jatoth@cisco.com on 9/23/14.
+ */
+public class PacketOutConvertorTest {
+
+ private ConvertorManager convertorManager;
+
+ @Before
+ public void setUp() {
+ convertorManager = ConvertorManagerFactory.createDefaultManager();
+ }
+
+ /**
+ * Test for {@link org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.PacketOutConvertor}
+ * with null parameters.
+ */
+ @Test
+ public void toPacketOutInputAllParmNullTest() {
+
+ TransmitPacketInputBuilder transmitPacketInputBuilder = new TransmitPacketInputBuilder();
+
+ String nodeId = "0";
+ String port = "0";
+
+ NodeRef ref = createNodeRef(nodeId);
+ NodeConnectorKey nodeConnKey = PacketOutConvertorTest.createNodeConnKey(nodeId, port);
+ NodeConnectorRef egressConfRef = new NodeConnectorRef(
+ createNodeConnRef(nodeId, nodeConnKey));
+
+ transmitPacketInputBuilder.setBufferId((Uint32) null);
+ transmitPacketInputBuilder.setConnectionCookie(null);
+ transmitPacketInputBuilder.setNode(ref);
+ transmitPacketInputBuilder.setPayload(null);
+ transmitPacketInputBuilder.setEgress(egressConfRef);
+ transmitPacketInputBuilder.setIngress(null);
+ TransmitPacketInput transmitPacketInput = transmitPacketInputBuilder
+ .build();
+
+ Short version = (short) 0x04;
+ Long xid = null;
+ XidConvertorData data = new XidConvertorData(version);
+ PacketOutInput message = convert(transmitPacketInput, data);
+
+ //FIXME : this has to be fixed along with actions changed in openflowjava
+
+ Assert.assertEquals(buildActionForNullTransmitPacketInputAction(nodeConnKey, version), message.getAction());
+
+ Assert.assertEquals(OFConstants.OFP_NO_BUFFER, message.getBufferId());
+ Assert.assertEquals(new PortNumber(Uint32.valueOf(0xfffffffdL)), message.getInPort());
+ Assert.assertEquals(Uint8.valueOf(version), message.getVersion());
+ Assert.assertEquals(xid, message.getXid());
+ Assert.assertArrayEquals(transmitPacketInput.getPayload(), message.getData());
+ }
+
+ /**
+ * Test for XidConvertorData.
+ */
+ @Test
+ public void toPacketOutInputAllParmTest() {
+ org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder ab =
+ new org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder();
+
+ OutputActionBuilder output = new OutputActionBuilder();
+ output.setMaxLength(OFConstants.OFPCML_NO_BUFFER);
+ Uri value = new Uri(OutputPortValues.CONTROLLER.toString());
+ output.setOutputNodeConnector(value);
+ ab.setAction(new OutputActionCaseBuilder().setOutputAction(
+ output.build()).build());
+ ab.setOrder(0);
+ ab.withKey(new ActionKey(0));
+
+ List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action> actionList =
+ new ArrayList<>();
+ actionList.add(ab.build());
+
+ final Uint32 bufferId = Uint32.valueOf(0xf);
+
+ final Uint32 valueForCookie = Uint32.valueOf(0xe);
+ ConnectionCookie connCook = new ConnectionCookie(valueForCookie);
+
+ String nodeId = "node:1";
+
+ NodeRef ref = createNodeRef(nodeId);
+
+ String portO = "0xfffffffd";
+ NodeConnectorKey egrConKey = PacketOutConvertorTest.createNodeConnKey(nodeId, portO);
+ NodeConnectorRef egressConfRef = new NodeConnectorRef(
+ createNodeConnRef(nodeId, egrConKey));
+
+ String inPort = "2";
+ NodeConnectorKey ingrConKey = PacketOutConvertorTest.createNodeConnKey(nodeId, inPort);
+ NodeConnectorRef ingressConRef = new NodeConnectorRef(
+ createNodeConnRef(nodeId, ingrConKey));
+
+ String string = new String("sendOutputMsg_TEST");
+ byte[] msg = string.getBytes();
+
+ byte[] payload = msg;
+
+ TransmitPacketInputBuilder transmitPacketInputBuilder = new TransmitPacketInputBuilder();
+ transmitPacketInputBuilder.setAction(actionList);
+ transmitPacketInputBuilder.setBufferId(bufferId);
+ transmitPacketInputBuilder.setConnectionCookie(connCook);
+ transmitPacketInputBuilder.setEgress(egressConfRef);
+ transmitPacketInputBuilder.setIngress(ingressConRef);
+ transmitPacketInputBuilder.setNode(ref);
+ transmitPacketInputBuilder.setPayload(payload);
+
+ final TransmitPacketInput transmitPacketInput = transmitPacketInputBuilder.build();
+
+ Short version = (short) 0x04;
+ byte[] datapathIdByte = new byte[EncodeConstants.SIZE_OF_LONG_IN_BYTES];
+ for (int i = 0; i < datapathIdByte.length; i++) {
+ datapathIdByte[i] = 1;
+ }
+ Uint64 datapathId = Uint64.valueOf(new BigInteger(1, datapathIdByte));
+ Uint32 xid = Uint32.valueOf(0xfffffL);
+
+ XidConvertorData data = new XidConvertorData(version);
+ data.setXid(xid);
+ data.setDatapathId(datapathId);
+ PacketOutInput message = convert(transmitPacketInput, data);
+
+ Assert.assertEquals(transmitPacketInput.getBufferId(), message.getBufferId());
+ Assert.assertEquals(Uint32.valueOf(inPort), message.getInPort().getValue());
+ Assert.assertEquals(Uint8.valueOf(version), message.getVersion());
+ Assert.assertEquals(xid, message.getXid());
+
+ ActionConvertorData actionConvertorData = new ActionConvertorData(version);
+ actionConvertorData.setDatapathId(datapathId);
+
+ Optional<List<Action>> actionsOptional = convertorManager.convert(actionList, actionConvertorData);
+
+ List<Action> actions = actionsOptional.orElse(null);
+ Assert.assertEquals(actions, message.getAction());
+ Assert.assertArrayEquals(transmitPacketInput.getPayload(), message.getData());
+ }
+
+ private static List<Action> buildActionForNullTransmitPacketInputAction(
+ final NodeConnectorKey nodeConKey, final short version) {
+
+ PortNumber outPort = getPortNumber(nodeConKey, version);
+
+ org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice
+ .OutputActionCaseBuilder outputActionCaseBuilder =
+ new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping
+ .action.choice.OutputActionCaseBuilder();
+
+ org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice
+ .output.action._case.OutputActionBuilder outputActionBuilder =
+ new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping
+ .action.choice.output.action._case.OutputActionBuilder();
+
+ outputActionBuilder.setPort(outPort);
+ outputActionBuilder.setMaxLength(Uint16.MAX_VALUE);
+ outputActionCaseBuilder.setOutputAction(outputActionBuilder.build());
+ ActionBuilder actionBuilder = new ActionBuilder();
+ actionBuilder.setActionChoice(outputActionCaseBuilder.build());
+
+ List<Action> actions = new ArrayList<>();
+ actions.add(actionBuilder.build());
+ return actions;
+ }
+
+ private static PortNumber getPortNumber(final NodeConnectorKey nodeConKey, final Short ofVersion) {
+ Uint32 port = InventoryDataServiceUtil.portNumberfromNodeConnectorId(OpenflowVersion.get(ofVersion),
+ nodeConKey.getId());
+ return new PortNumber(port);
+ }
+
+ private static NodeConnectorRef createNodeConnRef(final String nodeId, final NodeConnectorKey nodeConKey) {
+ InstanceIdentifier<NodeConnector> path = InstanceIdentifier
+ .builder(Nodes.class)
+ .child(Node.class,
+ new NodeKey(new NodeId(nodeId)))
+ .child(NodeConnector.class,
+ nodeConKey).build();
+
+ return new NodeConnectorRef(path);
+ }
+
+ private static NodeConnectorKey createNodeConnKey(final String nodeId, final String port) {
+ StringBuilder builder = new StringBuilder(nodeId).append(':').append(port);
+
+ return new NodeConnectorKey(new NodeConnectorId(builder.toString()));
+ }
+
+ private static NodeRef createNodeRef(final String nodeId) {
+ NodeKey key = new NodeKey(new NodeId(nodeId));
+ InstanceIdentifier<Node> path = InstanceIdentifier
+ .builder(Nodes.class)
+ .child(Node.class, key).build();
+ return new NodeRef(path);
+ }
+
+ private PacketOutInput convert(final TransmitPacketInput transmitPacketInput, final XidConvertorData data) {
+ Optional<PacketOutInput> messageOptional = convertorManager.convert(transmitPacketInput, data);
+ return messageOptional.orElse(PacketOutConvertor.defaultResult(data.getVersion()));
+ }
+}