Extensibility support (serialization part)
[openflowjava.git] / openflow-protocol-impl / src / test / java / org / opendaylight / openflowjava / protocol / impl / serialization / factories / multipart / TableFeaturesTest.java
index eb64df70ca5f05cfb1a5b7fdcedacf018e16cb84..8ca6f174fbc7cbf9acc125490493cc2c4c60fed4 100644 (file)
@@ -15,8 +15,12 @@ import java.util.ArrayList;
 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.impl.deserialization.factories.HelloMessageFactoryTest;\r
+import org.opendaylight.openflowjava.protocol.api.extensibility.MessageTypeKey;\r
+import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;\r
+import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;\r
+import org.opendaylight.openflowjava.protocol.impl.serialization.SerializerRegistryImpl;\r
 import org.opendaylight.openflowjava.protocol.impl.serialization.factories.MultipartRequestInputFactory;\r
 import org.opendaylight.openflowjava.protocol.impl.serialization.factories.MultipartRequestInputFactoryTest;\r
 import org.opendaylight.openflowjava.protocol.impl.util.BufferHelper;\r
@@ -46,8 +50,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.InPh
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.InPort;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.IpEcn;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.IpProto;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Nxm0Class;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Nxm1Class;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.OpenflowBasicClass;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.oxm.fields.grouping.MatchEntries;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.oxm.fields.grouping.MatchEntriesBuilder;\r
@@ -67,6 +69,19 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 public class TableFeaturesTest {\r
     private static final byte PADDING_IN_MULTIPART_REQUEST_MESSAGE =\r
             MultipartRequestInputFactoryTest.PADDING_IN_MULTIPART_REQUEST_MESSAGE;\r
+    private SerializerRegistry registry;\r
+    private OFSerializer<MultipartRequestInput> multipartFactory;\r
+\r
+    /**\r
+     * Initializes serializer registry and stores correct factory in field\r
+     */\r
+    @Before\r
+    public void startUp() {\r
+        registry = new SerializerRegistryImpl();\r
+        registry.init();\r
+        multipartFactory = registry.getSerializer(\r
+                new MessageTypeKey<>(EncodeConstants.OF13_VERSION_ID, MultipartRequestInput.class));\r
+    }\r
 \r
     /**\r
      * @throws Exception\r
@@ -163,7 +178,7 @@ public class TableFeaturesTest {
         entriesBuilder.setHasMask(false);\r
         entries.add(entriesBuilder.build());\r
         entriesBuilder = new MatchEntriesBuilder();\r
-        entriesBuilder.setOxmClass(Nxm0Class.class);\r
+        entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
         entriesBuilder.setOxmMatchField(InPort.class);\r
         entriesBuilder.setHasMask(false);\r
         entries.add(entriesBuilder.build());\r
@@ -180,7 +195,7 @@ public class TableFeaturesTest {
         entriesBuilder.setHasMask(false);\r
         entries.add(entriesBuilder.build());\r
         entriesBuilder = new MatchEntriesBuilder();\r
-        entriesBuilder.setOxmClass(Nxm1Class.class);\r
+        entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
         entriesBuilder.setOxmMatchField(IpEcn.class);\r
         entriesBuilder.setHasMask(false);\r
         entries.add(entriesBuilder.build());\r
@@ -195,15 +210,14 @@ public class TableFeaturesTest {
         MultipartRequestInput message = builder.build();\r
 \r
         ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();\r
-        MultipartRequestInputFactory factory = MultipartRequestInputFactory.getInstance();\r
-        factory.messageToBuffer(HelloMessageFactoryTest.VERSION_YET_SUPPORTED, out, message);\r
+        multipartFactory.serialize(message, out);\r
 \r
-        BufferHelper.checkHeaderV13(out, factory.getMessageType(), factory.computeLength(message));\r
+        BufferHelper.checkHeaderV13(out, (byte) 18, 232);\r
         Assert.assertEquals("Wrong type", 12, out.readUnsignedShort());\r
         Assert.assertEquals("Wrong flags", 1, out.readUnsignedShort());\r
         out.skipBytes(PADDING_IN_MULTIPART_REQUEST_MESSAGE);\r
         Assert.assertEquals("Wrong length", 120, out.readUnsignedShort());\r
-        Assert.assertEquals("Wrong table-id", 8, out.readUnsignedByte());\r
+        Assert.assertEquals("Wrong registry-id", 8, out.readUnsignedByte());\r
         out.skipBytes(5);\r
         Assert.assertEquals("Wrong name", "AAAABBBBCCCCDDDDEEEEFFFFGGGG",\r
                 ByteBufUtils.decodeNullTerminatedString(out, 32));\r
@@ -219,12 +233,12 @@ public class TableFeaturesTest {
         Assert.assertEquals("Wrong max-entries", 65, out.readUnsignedInt());\r
         Assert.assertEquals("Wrong property type", 2, out.readUnsignedShort());\r
         Assert.assertEquals("Wrong property length", 6, out.readUnsignedShort());\r
-        Assert.assertEquals("Wrong next-table-id", 1, out.readUnsignedByte());\r
-        Assert.assertEquals("Wrong next-table-id", 2, out.readUnsignedByte());\r
+        Assert.assertEquals("Wrong next-registry-id", 1, out.readUnsignedByte());\r
+        Assert.assertEquals("Wrong next-registry-id", 2, out.readUnsignedByte());\r
         out.skipBytes(2);\r
         Assert.assertEquals("Wrong property type", 3, out.readUnsignedShort());\r
         Assert.assertEquals("Wrong property length", 5, out.readUnsignedShort());\r
-        Assert.assertEquals("Wrong next-table-id", 3, out.readUnsignedByte());\r
+        Assert.assertEquals("Wrong next-registry-id", 3, out.readUnsignedByte());\r
         out.skipBytes(3);\r
         Assert.assertEquals("Wrong property type", 0, out.readUnsignedShort());\r
         Assert.assertEquals("Wrong property length", 12, out.readUnsignedShort());\r
@@ -246,7 +260,7 @@ public class TableFeaturesTest {
         Assert.assertEquals("Wrong instruction type", 1, out.readUnsignedShort());\r
         Assert.assertEquals("Wrong instruction length", 4, out.readUnsignedShort());\r
         Assert.assertEquals("Wrong length", 96, out.readUnsignedShort());\r
-        Assert.assertEquals("Wrong table-id", 8, out.readUnsignedByte());\r
+        Assert.assertEquals("Wrong registry-id", 8, out.readUnsignedByte());\r
         out.skipBytes(5);\r
         Assert.assertEquals("Wrong name", "AAAABBBBCCCCDDDDEEEEFFFFGGGG",\r
                 ByteBufUtils.decodeNullTerminatedString(out, 32));\r
@@ -265,7 +279,7 @@ public class TableFeaturesTest {
         Assert.assertEquals("Wrong match class", 0x8000, out.readUnsignedShort());\r
         Assert.assertEquals("Wrong match field&mask", 2, out.readUnsignedByte());\r
         Assert.assertEquals("Wrong match length", 4, out.readUnsignedByte());\r
-        Assert.assertEquals("Wrong match class", 0, out.readUnsignedShort());\r
+        Assert.assertEquals("Wrong match class", 0x8000, out.readUnsignedShort());\r
         Assert.assertEquals("Wrong match field&mask", 0, out.readUnsignedByte());\r
         Assert.assertEquals("Wrong match length", 4, out.readUnsignedByte());\r
         out.skipBytes(4);\r
@@ -274,7 +288,7 @@ public class TableFeaturesTest {
         Assert.assertEquals("Wrong match class", 0x8000, out.readUnsignedShort());\r
         Assert.assertEquals("Wrong match field&mask", 20, out.readUnsignedByte());\r
         Assert.assertEquals("Wrong match length", 1, out.readUnsignedByte());\r
-        Assert.assertEquals("Wrong match class", 1, out.readUnsignedShort());\r
+        Assert.assertEquals("Wrong match class", 0x8000, out.readUnsignedShort());\r
         Assert.assertEquals("Wrong match field&mask", 18, out.readUnsignedByte());\r
         Assert.assertEquals("Wrong match length", 1, out.readUnsignedByte());\r
         out.skipBytes(4);\r