Changed output directory for generated classes
[openflowjava.git] / openflow-protocol-impl / src / test / java / org / opendaylight / openflowjava / protocol / impl / serialization / factories / MultipartRequestInputFactoryTest.java
index fe50e8789d07094e661cd6bb3317b865989e1952..4227330b5d2da7d4df0a7cd58729b93b1bfb839c 100644 (file)
@@ -14,10 +14,14 @@ import io.netty.buffer.UnpooledByteBufAllocator;
 import java.math.BigInteger;
 
 import org.junit.Assert;
+import org.junit.Before;
 import org.junit.Test;
-import org.opendaylight.openflowjava.protocol.impl.deserialization.factories.HelloMessageFactoryTest;
+import org.opendaylight.openflowjava.protocol.api.extensibility.MessageTypeKey;
+import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;
+import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;
+import org.opendaylight.openflowjava.protocol.impl.serialization.SerializerRegistryImpl;
 import org.opendaylight.openflowjava.protocol.impl.util.BufferHelper;
-import org.opendaylight.openflowjava.protocol.impl.util.EncodeConstants;
+import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.GroupId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartRequestFlags;
@@ -28,7 +32,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestAggregateCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestAggregateCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestDescCaseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestExperimenterCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestExperimenterCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestFlowCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestFlowCaseBuilder;
@@ -59,13 +62,26 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
 public class MultipartRequestInputFactoryTest {
     /** padding in MultipartRequest message */
     public static final byte PADDING_IN_MULTIPART_REQUEST_MESSAGE = 4;
+    private SerializerRegistry registry;
+    private OFSerializer<MultipartRequestInput> multipartFactory;
+
+    /**
+     * Initializes serializer registry and stores correct factory in field
+     */
+    @Before
+    public void startUp() {
+        registry = new SerializerRegistryImpl();
+        registry.init();
+        multipartFactory = registry.getSerializer(
+                new MessageTypeKey<>(EncodeConstants.OF13_VERSION_ID, MultipartRequestInput.class));
+    }
 
     /**
      * @throws Exception
      * Testing of {@link MultipartRequestInputFactory} for correct translation from POJO
      */
     @Test
-    public void testMultipartRequestInputFactory() throws Exception {
+    public void testMultipartRequestFlowInputFactory() throws Exception {
         MultipartRequestInputBuilder builder = new MultipartRequestInputBuilder();
         BufferHelper.setupHeader(builder, EncodeConstants.OF13_VERSION_ID);
         builder.setType(MultipartType.forValue(1));
@@ -74,10 +90,9 @@ public class MultipartRequestInputFactoryTest {
         MultipartRequestInput message = builder.build();
 
         ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();
-        MultipartRequestInputFactory factory = MultipartRequestInputFactory.getInstance();
-        factory.messageToBuffer(HelloMessageFactoryTest.VERSION_YET_SUPPORTED, out, message);
+        multipartFactory.serialize(message, out);
 
-        BufferHelper.checkHeaderV13(out, factory.getMessageType(), factory.computeLength(message));
+        BufferHelper.checkHeaderV13(out, (byte) 18, 48);
         Assert.assertEquals("Wrong type", message.getType().getIntValue(), out.readShort());
         Assert.assertEquals("Wrong flags", message.getFlags(), decodeMultipartRequestFlags(out.readShort()));
         out.skipBytes(PADDING_IN_MULTIPART_REQUEST_MESSAGE);
@@ -133,10 +148,9 @@ public class MultipartRequestInputFactoryTest {
         MultipartRequestInput message = builder.build();
 
         ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();
-        MultipartRequestInputFactory factory = MultipartRequestInputFactory.getInstance();
-        factory.messageToBuffer(HelloMessageFactoryTest.VERSION_YET_SUPPORTED, out, message);
+        multipartFactory.serialize(message, out);
 
-        BufferHelper.checkHeaderV13(out, factory.getMessageType(), factory.computeLength(message));
+        BufferHelper.checkHeaderV13(out, (byte) 18, 48);
         Assert.assertEquals("Wrong type", message.getType().getIntValue(), out.readShort());
         Assert.assertEquals("Wrong flags", message.getFlags(), decodeMultipartRequestFlags(out.readShort()));
         out.skipBytes(PADDING_IN_MULTIPART_REQUEST_MESSAGE);
@@ -194,14 +208,13 @@ public class MultipartRequestInputFactoryTest {
         BufferHelper.setupHeader(builder, EncodeConstants.OF13_VERSION_ID);
         builder.setType(MultipartType.forValue(3));
         builder.setFlags(new MultipartRequestFlags(true));
-        //multipart request for table does not have body
+        //multipart request for registry does not have body
         MultipartRequestInput message = builder.build();
 
         ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();
-        MultipartRequestInputFactory factory = MultipartRequestInputFactory.getInstance();
-        factory.messageToBuffer(HelloMessageFactoryTest.VERSION_YET_SUPPORTED, out, message);
+        multipartFactory.serialize(message, out);
 
-        BufferHelper.checkHeaderV13(out, factory.getMessageType(), factory.computeLength(message));
+        BufferHelper.checkHeaderV13(out, (byte) 18, 16);
         Assert.assertEquals("Wrong type", message.getType().getIntValue(), out.readShort());
         Assert.assertEquals("Wrong flags", message.getFlags(), decodeMultipartRequestFlags(out.readShort()));
         out.skipBytes(PADDING_IN_MULTIPART_REQUEST_MESSAGE);
@@ -221,10 +234,9 @@ public class MultipartRequestInputFactoryTest {
         MultipartRequestInput message = builder.build();
 
         ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();
-        MultipartRequestInputFactory factory = MultipartRequestInputFactory.getInstance();
-        factory.messageToBuffer(HelloMessageFactoryTest.VERSION_YET_SUPPORTED, out, message);
+        multipartFactory.serialize(message, out);
 
-        BufferHelper.checkHeaderV13(out, factory.getMessageType(), factory.computeLength(message));
+        BufferHelper.checkHeaderV13(out, (byte) 18, 24);
         Assert.assertEquals("Wrong type", message.getType().getIntValue(), out.readShort());
         Assert.assertEquals("Wrong flags", message.getFlags(), decodeMultipartRequestFlags(out.readShort()));
         out.skipBytes(PADDING_IN_MULTIPART_REQUEST_MESSAGE);
@@ -263,10 +275,9 @@ public class MultipartRequestInputFactoryTest {
         MultipartRequestInput message = builder.build();
 
         ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();
-        MultipartRequestInputFactory factory = MultipartRequestInputFactory.getInstance();
-        factory.messageToBuffer(HelloMessageFactoryTest.VERSION_YET_SUPPORTED, out, message);
+        multipartFactory.serialize(message, out);
 
-        BufferHelper.checkHeaderV13(out, factory.getMessageType(), factory.computeLength(message));
+        BufferHelper.checkHeaderV13(out, (byte) 18, 24);
         Assert.assertEquals("Wrong type", message.getType().getIntValue(), out.readShort());
         Assert.assertEquals("Wrong flags", message.getFlags(), decodeMultipartRequestFlags(out.readShort()));
         out.skipBytes(PADDING_IN_MULTIPART_REQUEST_MESSAGE);
@@ -305,10 +316,9 @@ public class MultipartRequestInputFactoryTest {
         MultipartRequestInput message = builder.build();
 
         ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();
-        MultipartRequestInputFactory factory = MultipartRequestInputFactory.getInstance();
-        factory.messageToBuffer(HelloMessageFactoryTest.VERSION_YET_SUPPORTED, out, message);
+        multipartFactory.serialize(message, out);
 
-        BufferHelper.checkHeaderV13(out, factory.getMessageType(), factory.computeLength(message));
+        BufferHelper.checkHeaderV13(out, (byte) 18, 24);
         Assert.assertEquals("Wrong type", message.getType().getIntValue(), out.readShort());
         Assert.assertEquals("Wrong flags", message.getFlags(), decodeMultipartRequestFlags(out.readShort()));
         out.skipBytes(PADDING_IN_MULTIPART_REQUEST_MESSAGE);
@@ -347,10 +357,9 @@ public class MultipartRequestInputFactoryTest {
         MultipartRequestInput message = builder.build();
 
         ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();
-        MultipartRequestInputFactory factory = MultipartRequestInputFactory.getInstance();
-        factory.messageToBuffer(HelloMessageFactoryTest.VERSION_YET_SUPPORTED, out, message);
+        multipartFactory.serialize(message, out);
 
-        BufferHelper.checkHeaderV13(out, factory.getMessageType(), factory.computeLength(message));
+        BufferHelper.checkHeaderV13(out, (byte) 18, 24);
         Assert.assertEquals("Wrong type", message.getType().getIntValue(), out.readShort());
         Assert.assertEquals("Wrong flags", message.getFlags(), decodeMultipartRequestFlags(out.readShort()));
         out.skipBytes(PADDING_IN_MULTIPART_REQUEST_MESSAGE);
@@ -389,10 +398,9 @@ public class MultipartRequestInputFactoryTest {
         MultipartRequestInput message = builder.build();
 
         ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();
-        MultipartRequestInputFactory factory = MultipartRequestInputFactory.getInstance();
-        factory.messageToBuffer(HelloMessageFactoryTest.VERSION_YET_SUPPORTED, out, message);
+        multipartFactory.serialize(message, out);
 
-        BufferHelper.checkHeaderV13(out, factory.getMessageType(), factory.computeLength(message));
+        BufferHelper.checkHeaderV13(out, (byte) 18, 24);
         Assert.assertEquals("Wrong type", message.getType().getIntValue(), out.readShort());
         Assert.assertEquals("Wrong flags", message.getFlags(), decodeMultipartRequestFlags(out.readShort()));
         out.skipBytes(PADDING_IN_MULTIPART_REQUEST_MESSAGE);
@@ -422,70 +430,92 @@ public class MultipartRequestInputFactoryTest {
      * Testing of {@link MultipartRequestInputFactory} for correct translation from POJO
      */
     @Test
-    public void testMultipartRequestExperimenterMessageFactory() throws Exception {
+    public void testMultipartRequestDescMessageFactory() throws Exception {
         MultipartRequestInputBuilder builder = new MultipartRequestInputBuilder();
         BufferHelper.setupHeader(builder, EncodeConstants.OF13_VERSION_ID);
-        builder.setType(MultipartType.forValue(0xffff));
+        builder.setType(MultipartType.forValue(0));
         builder.setFlags(new MultipartRequestFlags(true));
-        builder.setMultipartRequestBody(createRequestExperimenter());
+        builder.setMultipartRequestBody(createRequestDesc());
         MultipartRequestInput message = builder.build();
 
         ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();
-        MultipartRequestInputFactory factory = MultipartRequestInputFactory.getInstance();
-        factory.messageToBuffer(HelloMessageFactoryTest.VERSION_YET_SUPPORTED, out, message);
+        multipartFactory.serialize(message, out);
 
-        BufferHelper.checkHeaderV13(out, factory.getMessageType(), factory.computeLength(message));
+        BufferHelper.checkHeaderV13(out, (byte) 18, 16);
         Assert.assertEquals("Wrong type", message.getType().getIntValue(), out.readUnsignedShort());
         Assert.assertEquals("Wrong flags", message.getFlags(), decodeMultipartRequestFlags(out.readShort()));
-        out.skipBytes(PADDING_IN_MULTIPART_REQUEST_MESSAGE);
-        Assert.assertEquals("Wrong experimenterBody", message.getMultipartRequestBody(), decodeRequestExperimenter(out));
     }
 
-    private static MultipartRequestExperimenterCase createRequestExperimenter() {
-        MultipartRequestExperimenterCaseBuilder caseBuilder = new MultipartRequestExperimenterCaseBuilder();
-        MultipartRequestExperimenterBuilder builder = new MultipartRequestExperimenterBuilder();
-        builder.setExperimenter(1133L);
-        builder.setExpType(1135L);
-        caseBuilder.setMultipartRequestExperimenter(builder.build());
+    private static MultipartRequestBody createRequestDesc() {
+        MultipartRequestDescCaseBuilder caseBuilder = new MultipartRequestDescCaseBuilder();
+        MultipartRequestDescBuilder builder = new MultipartRequestDescBuilder();
+        caseBuilder.setMultipartRequestDesc(builder.build());
         return caseBuilder.build();
     }
 
-    private static MultipartRequestExperimenterCase decodeRequestExperimenter(ByteBuf output) {
+    /**
+     * Testing OF10StatsRequestInputFactory (Vendor) for correct serialization
+     * @throws Exception
+     */
+    @Test
+    public void testExperimenter() throws Exception {
+        MultipartRequestInputBuilder builder = new MultipartRequestInputBuilder();
+        BufferHelper.setupHeader(builder, EncodeConstants.OF10_VERSION_ID);
+        builder.setType(MultipartType.OFPMPEXPERIMENTER);
+        builder.setFlags(new MultipartRequestFlags(false));
         MultipartRequestExperimenterCaseBuilder caseBuilder = new MultipartRequestExperimenterCaseBuilder();
-        MultipartRequestExperimenterBuilder builder = new MultipartRequestExperimenterBuilder();
-        builder.setExperimenter(output.readUnsignedInt());
-        builder.setExpType(output.readUnsignedInt());
-        caseBuilder.setMultipartRequestExperimenter(builder.build());
-        return caseBuilder.build();
+        MultipartRequestExperimenterBuilder expBuilder = new MultipartRequestExperimenterBuilder();
+        expBuilder.setExperimenter(56L);
+        expBuilder.setExpType(148L);
+        byte[] expData = new byte[]{0, 1, 2, 3, 4, 5, 6, 7};
+        expBuilder.setData(expData);
+        caseBuilder.setMultipartRequestExperimenter(expBuilder.build());
+        builder.setMultipartRequestBody(caseBuilder.build());
+        MultipartRequestInput message = builder.build();
+        
+        ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();
+        multipartFactory.serialize(message, out);
+        
+        BufferHelper.checkHeaderV10(out, (byte) 18, 32);
+        Assert.assertEquals("Wrong type", 0xFFFF, out.readUnsignedShort());
+        Assert.assertEquals("Wrong flags", 0, out.readUnsignedShort());
+        out.skipBytes(EncodeConstants.SIZE_OF_INT_IN_BYTES);
+        Assert.assertEquals("Wrong experimenter", 56, out.readUnsignedInt());
+        Assert.assertEquals("Wrong exp-type", 148, out.readUnsignedInt());
+        byte[] temp = new byte[8];
+        out.readBytes(temp);
+        Assert.assertArrayEquals("Wrong data", expData, temp);
+        Assert.assertTrue("Unread data", out.readableBytes() == 0);
     }
 
     /**
+     * Testing OF10StatsRequestInputFactory (Vendor) for correct serialization
      * @throws Exception
-     * Testing of {@link MultipartRequestInputFactory} for correct translation from POJO
      */
     @Test
-    public void testMultipartRequestDescMessageFactory() throws Exception {
+    public void testExperimenterWithoutData() throws Exception {
         MultipartRequestInputBuilder builder = new MultipartRequestInputBuilder();
-        BufferHelper.setupHeader(builder, EncodeConstants.OF13_VERSION_ID);
-        builder.setType(MultipartType.forValue(0));
-        builder.setFlags(new MultipartRequestFlags(true));
-        builder.setMultipartRequestBody(createRequestDesc());
+        BufferHelper.setupHeader(builder, EncodeConstants.OF10_VERSION_ID);
+        builder.setType(MultipartType.OFPMPEXPERIMENTER);
+        builder.setFlags(new MultipartRequestFlags(false));
+        MultipartRequestExperimenterCaseBuilder caseBuilder = new MultipartRequestExperimenterCaseBuilder();
+        MultipartRequestExperimenterBuilder expBuilder = new MultipartRequestExperimenterBuilder();
+        expBuilder.setExperimenter(56L);
+        expBuilder.setExpType(152L);
+        caseBuilder.setMultipartRequestExperimenter(expBuilder.build());
+        builder.setMultipartRequestBody(caseBuilder.build());
         MultipartRequestInput message = builder.build();
-
+        
         ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();
-        MultipartRequestInputFactory factory = MultipartRequestInputFactory.getInstance();
-        factory.messageToBuffer(HelloMessageFactoryTest.VERSION_YET_SUPPORTED, out, message);
-
-        BufferHelper.checkHeaderV13(out, factory.getMessageType(), factory.computeLength(message));
-        Assert.assertEquals("Wrong type", message.getType().getIntValue(), out.readUnsignedShort());
-        Assert.assertEquals("Wrong flags", message.getFlags(), decodeMultipartRequestFlags(out.readShort()));
-    }
-
-    private static MultipartRequestBody createRequestDesc() {
-        MultipartRequestDescCaseBuilder caseBuilder = new MultipartRequestDescCaseBuilder();
-        MultipartRequestDescBuilder builder = new MultipartRequestDescBuilder();
-        caseBuilder.setMultipartRequestDesc(builder.build());
-        return caseBuilder.build();
+        multipartFactory.serialize(message, out);
+        
+        BufferHelper.checkHeaderV10(out, (byte) 18, 24);
+        Assert.assertEquals("Wrong type", 0xFFFF, out.readUnsignedShort());
+        Assert.assertEquals("Wrong flags", 0, out.readUnsignedShort());
+        out.skipBytes(EncodeConstants.SIZE_OF_INT_IN_BYTES);
+        Assert.assertEquals("Wrong experimenter", 56, out.readUnsignedInt());
+        Assert.assertEquals("Wrong exp-type", 152, out.readUnsignedInt());
+        Assert.assertTrue("Unread data", out.readableBytes() == 0);
     }
 
 }