Remove trailing whitespace
[openflowjava.git] / openflow-protocol-impl / src / test / java / org / opendaylight / openflowjava / protocol / impl / serialization / factories / HelloInputMessageFactoryTest.java
index aa2712b67cc753fb06a82e7ff2ede02c724ee105..e2ea0f86b39a323502d223b42312ed61835d2fe2 100644 (file)
-/* Copyright (C)2013 Pantheon Technologies, s.r.o. All rights reserved. */\r
-package org.opendaylight.openflowjava.protocol.impl.serialization.factories;\r
-\r
-import io.netty.buffer.ByteBuf;\r
-import io.netty.buffer.UnpooledByteBufAllocator;\r
-\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-\r
-import org.junit.Assert;\r
-import org.junit.Test;\r
-import org.opendaylight.openflowjava.protocol.impl.deserialization.factories.HelloMessageFactoryTest;\r
-import org.opendaylight.openflowjava.protocol.impl.util.BufferHelper;\r
-import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;\r
-import org.opendaylight.openflowjava.protocol.impl.util.EncodeConstants;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.HelloElementType;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.HelloInput;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.HelloInputBuilder;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.hello.Elements;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.hello.ElementsBuilder;\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
-\r
-/**\r
- * @author michal.polkorab\r
- *\r
- */\r
-public class HelloInputMessageFactoryTest {\r
-\r
-    private static final Logger LOGGER = LoggerFactory.getLogger(HelloInputMessageFactoryTest.class);\r
-    \r
-    /**\r
-     * Testing of {@link HelloInputMessageFactory} for correct translation from POJO\r
-     * @throws Exception \r
-     */\r
-    @Test\r
-    public void testWithoutElementsSet() throws Exception {\r
-        HelloInputBuilder hib = new HelloInputBuilder();\r
-        BufferHelper.setupHeader(hib, EncodeConstants.OF13_VERSION_ID);\r
-        HelloInput hi = hib.build();\r
-        \r
-        ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();\r
-        HelloInputMessageFactory himf = HelloInputMessageFactory.getInstance();\r
-        himf.messageToBuffer(HelloMessageFactoryTest.VERSION_YET_SUPPORTED, out, hi);\r
-        \r
-        BufferHelper.checkHeaderV13(out, himf.getMessageType(), himf.computeLength(hi));\r
-    }\r
-    \r
-    /**\r
-     * Testing of {@link HelloInputMessageFactory} for correct translation from POJO\r
-     * @throws Exception \r
-     */\r
-    @Test\r
-    public void testWith4BitVersionBitmap() throws Exception {\r
-        int lengthOfBitmap = 4;\r
-        HelloInputBuilder builder = new HelloInputBuilder();\r
-        BufferHelper.setupHeader(builder, EncodeConstants.OF13_VERSION_ID);\r
-        List<Elements> expectedElement = createElement(lengthOfBitmap);\r
-        builder.setElements(expectedElement);\r
-        HelloInput message = builder.build();\r
-        \r
-        ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();\r
-        HelloInputMessageFactory factory = HelloInputMessageFactory.getInstance();\r
-        factory.messageToBuffer(HelloMessageFactoryTest.VERSION_YET_SUPPORTED, out, message);\r
-        LOGGER.debug("bytebuf: " + ByteBufUtils.byteBufToHexString(out));\r
-        \r
-        BufferHelper.checkHeaderV13(out, factory.getMessageType(), factory.computeLength(message));\r
-        Elements element = readElement(out).get(0);\r
-        Assert.assertEquals("Wrong element type", expectedElement.get(0).getType(), element.getType());\r
-        Elements comparation = createComparationElement(lengthOfBitmap).get(0);\r
-        Assert.assertArrayEquals("Wrong element bitmap", comparation.getVersionBitmap().toArray(), element.getVersionBitmap().toArray());\r
-    }\r
-    \r
-    /**\r
-     * Testing of {@link HelloInputMessageFactory} for correct translation from POJO\r
-     * @throws Exception \r
-     */\r
-    @Test\r
-    public void testWith64BitVersionBitmap() throws Exception {\r
-        int lengthOfBitmap = 64;\r
-        HelloInputBuilder builder = new HelloInputBuilder();\r
-        BufferHelper.setupHeader(builder, EncodeConstants.OF13_VERSION_ID);\r
-        List<Elements> expectedElement = createElement(lengthOfBitmap);\r
-        builder.setElements(expectedElement);\r
-        HelloInput message = builder.build();\r
-        \r
-        ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();\r
-        HelloInputMessageFactory factory = HelloInputMessageFactory.getInstance();\r
-        factory.messageToBuffer(HelloMessageFactoryTest.VERSION_YET_SUPPORTED, out, message);\r
-        LOGGER.debug("bytebuf: " + ByteBufUtils.byteBufToHexString(out));\r
-        \r
-        BufferHelper.checkHeaderV13(out, factory.getMessageType(), factory.computeLength(message));\r
-        Elements element = readElement(out).get(0);\r
-        Assert.assertEquals("Wrong element type", expectedElement.get(0).getType(), element.getType());\r
-        Elements comparation = createComparationElement(lengthOfBitmap).get(0);\r
-        Assert.assertArrayEquals("Wrong element bitmap", comparation.getVersionBitmap().toArray(), element.getVersionBitmap().toArray());\r
-    }\r
-    \r
-    private static List<Elements> createElement(int lengthOfBitmap) {\r
-        ElementsBuilder elementsBuilder = new ElementsBuilder();\r
-        List<Elements> elementsList = new ArrayList<>();\r
-        List<Boolean> booleanList = new ArrayList<>();\r
-        for (int i = 0; i < lengthOfBitmap; i++) {\r
-            booleanList.add(true);\r
-        }\r
-        elementsBuilder.setType(HelloElementType.forValue(1));\r
-        elementsBuilder.setVersionBitmap(booleanList);\r
-        elementsList.add(elementsBuilder.build());\r
-        return elementsList;\r
-    }\r
-    \r
-    private static List<Elements> createComparationElement(int lengthOfBitmap) {\r
-        ElementsBuilder elementsBuilder = new ElementsBuilder();\r
-        List<Elements> elementsList = new ArrayList<>();\r
-        List<Boolean> booleanList = new ArrayList<>();\r
-        for (int i = 0; i < lengthOfBitmap; i++) {\r
-            booleanList.add(true);\r
-        }\r
-        if ((lengthOfBitmap % Integer.SIZE) != 0) {\r
-            for (int i = 0; i < (Integer.SIZE - (lengthOfBitmap % Integer.SIZE)); i++) {\r
-                booleanList.add(false);\r
-            }\r
-        }\r
-        LOGGER.debug("boolsize " + booleanList.size());\r
-        elementsBuilder.setType(HelloElementType.forValue(1));\r
-        elementsBuilder.setVersionBitmap(booleanList);\r
-        elementsList.add(elementsBuilder.build());\r
-        return elementsList;\r
-    }\r
-    \r
-    private static List<Elements> readElement(ByteBuf input) {\r
-        List<Elements> elementsList = new ArrayList<>();\r
-        while (input.readableBytes() > 0) {\r
-            ElementsBuilder elementsBuilder = new ElementsBuilder();\r
-            int type = input.readUnsignedShort();\r
-            int elementLength = input.readUnsignedShort();\r
-            if (type == HelloElementType.VERSIONBITMAP.getIntValue()) {\r
-                elementsBuilder.setType(HelloElementType.forValue(type));\r
-                int[] versionBitmap = new int[(elementLength - HelloInputMessageFactory.HELLO_ELEMENT_HEADER_SIZE) / 4];\r
-                for (int i = 0; i < versionBitmap.length; i++) {\r
-                    versionBitmap[i] = (int) input.readUnsignedInt();\r
-                }\r
-                elementsBuilder.setVersionBitmap(readVersionBitmap(versionBitmap));\r
-                int paddingRemainder = elementLength % EncodeConstants.PADDING;\r
-                if (paddingRemainder != 0) {\r
-                    input.readBytes(EncodeConstants.PADDING - paddingRemainder);\r
-                }\r
-            }\r
-            elementsList.add(elementsBuilder.build());\r
-        }\r
-        return elementsList;\r
-    }\r
-    \r
-    private static List<Boolean> readVersionBitmap(int[] input){\r
-        List<Boolean> versionBitmapList = new ArrayList<>();\r
-        for (int i = 0; i < input.length; i++) {\r
-            int mask = input[i];\r
-            for (int j = 0; j < Integer.SIZE; j++) {\r
-                    versionBitmapList.add((mask & (1<<j)) != 0);\r
-            }\r
-        }\r
-        return versionBitmapList;\r
-    }\r
-\r
-}\r
+/*
+ * Copyright (c) 2013 Pantheon Technologies s.r.o. 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.openflowjava.protocol.impl.serialization.factories;
+
+import io.netty.buffer.ByteBuf;
+import io.netty.buffer.UnpooledByteBufAllocator;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+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.util.ByteBufUtils;
+import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.HelloElementType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.HelloInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.HelloInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.hello.Elements;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.hello.ElementsBuilder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * @author michal.polkorab
+ *
+ */
+public class HelloInputMessageFactoryTest {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(HelloInputMessageFactoryTest.class);
+    private SerializerRegistry registry;
+    private OFSerializer<HelloInput> helloFactory;
+
+    /**
+     * Initializes serializer registry and stores correct factory in field
+     */
+    @Before
+    public void startUp() {
+        registry = new SerializerRegistryImpl();
+        registry.init();
+        helloFactory = registry.getSerializer(
+                new MessageTypeKey<>(EncodeConstants.OF13_VERSION_ID, HelloInput.class));
+    }
+
+    /**
+     * Testing of {@link HelloInputMessageFactory} for correct translation from POJO
+     * @throws Exception
+     */
+    @Test
+    public void testWithoutElementsSet() throws Exception {
+        HelloInputBuilder hib = new HelloInputBuilder();
+        BufferHelper.setupHeader(hib, EncodeConstants.OF13_VERSION_ID);
+        HelloInput hi = hib.build();
+
+        ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();
+        helloFactory.serialize(hi, out);
+
+        BufferHelper.checkHeaderV13(out,(byte) 0, EncodeConstants.OFHEADER_SIZE);
+    }
+
+    /**
+     * Testing of {@link HelloInputMessageFactory} for correct translation from POJO
+     * @throws Exception
+     */
+    @Test
+    public void testWith4BitVersionBitmap() throws Exception {
+        int lengthOfBitmap = 4;
+        HelloInputBuilder builder = new HelloInputBuilder();
+        BufferHelper.setupHeader(builder, EncodeConstants.OF13_VERSION_ID);
+        List<Elements> expectedElement = createElement(lengthOfBitmap);
+        builder.setElements(expectedElement);
+        HelloInput message = builder.build();
+
+        ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();
+        helloFactory.serialize(message, out);
+        LOGGER.debug("bytebuf: " + ByteBufUtils.byteBufToHexString(out));
+
+        BufferHelper.checkHeaderV13(out, (byte) 0, 16);
+        Elements element = readElement(out).get(0);
+        Assert.assertEquals("Wrong element type", expectedElement.get(0).getType(), element.getType());
+        Elements comparation = createComparationElement(lengthOfBitmap).get(0);
+        Assert.assertArrayEquals("Wrong element bitmap", comparation.getVersionBitmap().toArray(), element.getVersionBitmap().toArray());
+    }
+
+    /**
+     * Testing of {@link HelloInputMessageFactory} for correct translation from POJO
+     * @throws Exception
+     */
+    @Test
+    public void testWith64BitVersionBitmap() throws Exception {
+        int lengthOfBitmap = 64;
+        HelloInputBuilder builder = new HelloInputBuilder();
+        BufferHelper.setupHeader(builder, EncodeConstants.OF13_VERSION_ID);
+        List<Elements> expectedElement = createElement(lengthOfBitmap);
+        builder.setElements(expectedElement);
+        HelloInput message = builder.build();
+
+        ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();
+        helloFactory.serialize(message, out);
+        LOGGER.debug("bytebuf: " + ByteBufUtils.byteBufToHexString(out));
+
+        BufferHelper.checkHeaderV13(out, (byte) 0, 24);
+        Elements element = readElement(out).get(0);
+        Assert.assertEquals("Wrong element type", expectedElement.get(0).getType(), element.getType());
+        Elements comparation = createComparationElement(lengthOfBitmap).get(0);
+        Assert.assertArrayEquals("Wrong element bitmap", comparation.getVersionBitmap().toArray(), element.getVersionBitmap().toArray());
+    }
+
+    private static List<Elements> createElement(int lengthOfBitmap) {
+        ElementsBuilder elementsBuilder = new ElementsBuilder();
+        List<Elements> elementsList = new ArrayList<>();
+        List<Boolean> booleanList = new ArrayList<>();
+        for (int i = 0; i < lengthOfBitmap; i++) {
+            booleanList.add(true);
+        }
+        elementsBuilder.setType(HelloElementType.forValue(1));
+        elementsBuilder.setVersionBitmap(booleanList);
+        elementsList.add(elementsBuilder.build());
+        return elementsList;
+    }
+
+    private static List<Elements> createComparationElement(int lengthOfBitmap) {
+        ElementsBuilder elementsBuilder = new ElementsBuilder();
+        List<Elements> elementsList = new ArrayList<>();
+        List<Boolean> booleanList = new ArrayList<>();
+        for (int i = 0; i < lengthOfBitmap; i++) {
+            booleanList.add(true);
+        }
+        if ((lengthOfBitmap % Integer.SIZE) != 0) {
+            for (int i = 0; i < (Integer.SIZE - (lengthOfBitmap % Integer.SIZE)); i++) {
+                booleanList.add(false);
+            }
+        }
+        LOGGER.debug("boolsize " + booleanList.size());
+        elementsBuilder.setType(HelloElementType.forValue(1));
+        elementsBuilder.setVersionBitmap(booleanList);
+        elementsList.add(elementsBuilder.build());
+        return elementsList;
+    }
+
+    private static List<Elements> readElement(ByteBuf input) {
+        List<Elements> elementsList = new ArrayList<>();
+        while (input.readableBytes() > 0) {
+            ElementsBuilder elementsBuilder = new ElementsBuilder();
+            int type = input.readUnsignedShort();
+            int elementLength = input.readUnsignedShort();
+            if (type == HelloElementType.VERSIONBITMAP.getIntValue()) {
+                elementsBuilder.setType(HelloElementType.forValue(type));
+                int[] versionBitmap = new int[(elementLength - 4) / 4];
+                for (int i = 0; i < versionBitmap.length; i++) {
+                    versionBitmap[i] = (int) input.readUnsignedInt();
+                }
+                elementsBuilder.setVersionBitmap(readVersionBitmap(versionBitmap));
+                int paddingRemainder = elementLength % EncodeConstants.PADDING;
+                if (paddingRemainder != 0) {
+                    input.readBytes(EncodeConstants.PADDING - paddingRemainder);
+                }
+            }
+            elementsList.add(elementsBuilder.build());
+        }
+        return elementsList;
+    }
+
+    private static List<Boolean> readVersionBitmap(int[] input){
+        List<Boolean> versionBitmapList = new ArrayList<>();
+        for (int i = 0; i < input.length; i++) {
+            int mask = input[i];
+            for (int j = 0; j < Integer.SIZE; j++) {
+                    versionBitmapList.add((mask & (1<<j)) != 0);
+            }
+        }
+        return versionBitmapList;
+    }
+
+}