import java.util.List;\r
\r
import org.junit.Assert;\r
+import org.junit.Before;\r
import org.junit.Test;\r
+import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;\r
+import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;\r
+import org.opendaylight.openflowjava.protocol.impl.serialization.SerializerRegistryImpl;\r
+import org.opendaylight.openflowjava.util.ByteBufUtils;\r
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;\r
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.DlAddressAction;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.DlAddressActionBuilder;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.ExperimenterAction;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.ExperimenterActionBuilder;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.IpAddressAction;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.IpAddressActionBuilder;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.MaxLengthAction;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.VlanVidAction;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.VlanVidActionBuilder;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.Enqueue;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.Experimenter;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.Output;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.SetDlDst;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.SetDlSrc;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.SetVlanPcp;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.SetVlanVid;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.StripVlan;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.ActionsList;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.ActionsListBuilder;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.actions.list.ActionBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.Action;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.grouping.ActionBuilder;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortNumber;\r
\r
/**\r
*/\r
public class OF10ActionsSerializerTest {\r
\r
+ private SerializerRegistry registry;\r
+\r
+ /**\r
+ * Initializes serializer table and stores correct factory in field\r
+ */\r
+ @Before\r
+ public void startUp() {\r
+ registry = new SerializerRegistryImpl();\r
+ registry.init();\r
+ }\r
+\r
/**\r
* Testing correct serialization of actions (OF v1.0) \r
*/\r
@Test\r
public void test() {\r
- List<ActionsList> actions = new ArrayList<>();\r
- ActionsListBuilder listBuilder = new ActionsListBuilder();\r
+ List<Action> actions = new ArrayList<>();\r
ActionBuilder actionBuilder = new ActionBuilder();\r
actionBuilder.setType(Output.class);\r
PortActionBuilder portBuilder = new PortActionBuilder();\r
MaxLengthActionBuilder maxLen = new MaxLengthActionBuilder();\r
maxLen.setMaxLength(32);\r
actionBuilder.addAugmentation(MaxLengthAction.class, maxLen.build());\r
- listBuilder.setAction(actionBuilder.build());\r
- actions.add(listBuilder.build());\r
- listBuilder = new ActionsListBuilder();\r
+ actions.add(actionBuilder.build());\r
actionBuilder = new ActionBuilder();\r
actionBuilder.setType(SetVlanVid.class);\r
VlanVidActionBuilder vlanBuilder = new VlanVidActionBuilder();\r
vlanBuilder.setVlanVid(15);\r
actionBuilder.addAugmentation(VlanVidAction.class, vlanBuilder.build());\r
- listBuilder.setAction(actionBuilder.build());\r
- actions.add(listBuilder.build());\r
- listBuilder = new ActionsListBuilder();\r
+ actions.add(actionBuilder.build());\r
actionBuilder = new ActionBuilder();\r
actionBuilder.setType(SetVlanPcp.class);\r
VlanPcpActionBuilder pcpBuilder = new VlanPcpActionBuilder();\r
pcpBuilder.setVlanPcp((short) 16);\r
actionBuilder.addAugmentation(VlanPcpAction.class, pcpBuilder.build());\r
- listBuilder.setAction(actionBuilder.build());\r
- actions.add(listBuilder.build());\r
- listBuilder = new ActionsListBuilder();\r
+ actions.add(actionBuilder.build());\r
actionBuilder = new ActionBuilder();\r
actionBuilder.setType(StripVlan.class);\r
- listBuilder.setAction(actionBuilder.build());\r
- actions.add(listBuilder.build());\r
- listBuilder = new ActionsListBuilder();\r
+ actions.add(actionBuilder.build());\r
actionBuilder = new ActionBuilder();\r
actionBuilder.setType(SetDlSrc.class);\r
DlAddressActionBuilder dlBuilder = new DlAddressActionBuilder();\r
dlBuilder.setDlAddress(new MacAddress("00:00:00:02:03:04"));\r
actionBuilder.addAugmentation(DlAddressAction.class, dlBuilder.build());\r
- listBuilder.setAction(actionBuilder.build());\r
- actions.add(listBuilder.build());\r
- listBuilder = new ActionsListBuilder();\r
+ actions.add(actionBuilder.build());\r
actionBuilder = new ActionBuilder();\r
actionBuilder.setType(SetDlDst.class);\r
dlBuilder = new DlAddressActionBuilder();\r
dlBuilder.setDlAddress(new MacAddress("00:00:00:01:02:03"));\r
actionBuilder.addAugmentation(DlAddressAction.class, dlBuilder.build());\r
- listBuilder.setAction(actionBuilder.build());\r
- actions.add(listBuilder.build());\r
- listBuilder = new ActionsListBuilder();\r
+ actions.add(actionBuilder.build());\r
actionBuilder = new ActionBuilder();\r
actionBuilder.setType(SetNwSrc.class);\r
IpAddressActionBuilder ipBuilder = new IpAddressActionBuilder();\r
ipBuilder.setIpAddress(new Ipv4Address("10.0.0.1"));\r
actionBuilder.addAugmentation(IpAddressAction.class, ipBuilder.build());\r
- listBuilder.setAction(actionBuilder.build());\r
- actions.add(listBuilder.build());\r
- listBuilder = new ActionsListBuilder();\r
+ actions.add(actionBuilder.build());\r
actionBuilder = new ActionBuilder();\r
actionBuilder.setType(SetNwDst.class);\r
ipBuilder = new IpAddressActionBuilder();\r
ipBuilder.setIpAddress(new Ipv4Address("10.0.0.3"));\r
actionBuilder.addAugmentation(IpAddressAction.class, ipBuilder.build());\r
- listBuilder.setAction(actionBuilder.build());\r
- actions.add(listBuilder.build());\r
- listBuilder = new ActionsListBuilder();\r
+ actions.add(actionBuilder.build());\r
actionBuilder = new ActionBuilder();\r
actionBuilder.setType(SetNwTos.class);\r
NwTosActionBuilder tosBuilder = new NwTosActionBuilder();\r
tosBuilder.setNwTos((short) 204);\r
actionBuilder.addAugmentation(NwTosAction.class, tosBuilder.build());\r
- listBuilder.setAction(actionBuilder.build());\r
- actions.add(listBuilder.build());\r
- listBuilder = new ActionsListBuilder();\r
+ actions.add(actionBuilder.build());\r
actionBuilder = new ActionBuilder();\r
actionBuilder.setType(SetTpSrc.class);\r
portBuilder = new PortActionBuilder();\r
portBuilder.setPort(new PortNumber(6653L));\r
actionBuilder.addAugmentation(PortAction.class, portBuilder.build());\r
- listBuilder.setAction(actionBuilder.build());\r
- actions.add(listBuilder.build());\r
- listBuilder = new ActionsListBuilder();\r
+ actions.add(actionBuilder.build());\r
actionBuilder = new ActionBuilder();\r
actionBuilder.setType(SetTpDst.class);\r
portBuilder = new PortActionBuilder();\r
portBuilder.setPort(new PortNumber(6633L));\r
actionBuilder.addAugmentation(PortAction.class, portBuilder.build());\r
- listBuilder.setAction(actionBuilder.build());\r
- actions.add(listBuilder.build());\r
- listBuilder = new ActionsListBuilder();\r
+ actions.add(actionBuilder.build());\r
actionBuilder = new ActionBuilder();\r
actionBuilder.setType(Enqueue.class);\r
portBuilder = new PortActionBuilder();\r
QueueIdActionBuilder queueBuilder = new QueueIdActionBuilder();\r
queueBuilder.setQueueId(400L);\r
actionBuilder.addAugmentation(QueueIdAction.class, queueBuilder.build());\r
- listBuilder.setAction(actionBuilder.build());\r
- actions.add(listBuilder.build());\r
- listBuilder = new ActionsListBuilder();\r
- actionBuilder = new ActionBuilder();\r
- actionBuilder.setType(Experimenter.class);\r
- ExperimenterActionBuilder expBuilder = new ExperimenterActionBuilder();\r
- expBuilder.setExperimenter(500L);\r
- actionBuilder.addAugmentation(ExperimenterAction.class, expBuilder.build());\r
- listBuilder.setAction(actionBuilder.build());\r
- actions.add(listBuilder.build());\r
+ actions.add(actionBuilder.build());\r
\r
ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();\r
- OF10ActionsSerializer.encodeActionsV10(out, actions);\r
+ ListSerializer.serializeList(actions, TypeKeyMakerFactory\r
+ .createActionKeyMaker(EncodeConstants.OF10_VERSION_ID), registry, out);\r
\r
Assert.assertEquals("Wrong action type", 0, out.readUnsignedShort());\r
Assert.assertEquals("Wrong action length", 8, out.readUnsignedShort());\r
Assert.assertEquals("Wrong port", 6613, out.readUnsignedShort());\r
out.skipBytes(6);\r
Assert.assertEquals("Wrong queue-id", 400, out.readUnsignedInt());\r
- Assert.assertEquals("Wrong action type", 65535, out.readUnsignedShort());\r
- Assert.assertEquals("Wrong action length", 8, out.readUnsignedShort());\r
- Assert.assertEquals("Wrong vendor-id", 500, out.readUnsignedInt());\r
Assert.assertTrue("Written more bytes than needed", out.readableBytes() == 0);\r
}\r
\r