Allow any hello mesage and extend hello support for v1.4, v1.5
[openflowjava.git] / openflow-protocol-impl / src / test / java / org / opendaylight / openflowjava / protocol / impl / deserialization / factories / HelloMessageFactoryTest.java
index 7dab76e20f82af392448a9a234ad5f7cb3b8a8e9..d4ec69d4460fe675387a0ddf724197129451f5be 100644 (file)
@@ -9,46 +9,54 @@
 package org.opendaylight.openflowjava.protocol.impl.deserialization.factories;
 
 import io.netty.buffer.ByteBuf;
-
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
-
 import org.junit.Assert;
-import org.junit.Before;
 import org.junit.Test;
-import org.opendaylight.openflowjava.protocol.api.extensibility.DeserializerRegistry;
-import org.opendaylight.openflowjava.protocol.api.extensibility.OFDeserializer;
 import org.opendaylight.openflowjava.protocol.api.keys.MessageCodeKey;
-import org.opendaylight.openflowjava.protocol.impl.deserialization.DeserializerRegistryImpl;
-import org.opendaylight.openflowjava.protocol.impl.util.BufferHelper;
 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
+import org.opendaylight.openflowjava.protocol.impl.util.BufferHelper;
+import org.opendaylight.openflowjava.protocol.impl.util.DefaultDeserializerFactoryTest;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.HelloElementType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.HelloMessage;
 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;
 
 /**
+ * Test for {@link org.opendaylight.openflowjava.protocol.impl.deserialization.factories.HelloMessageFactory}.
  * @author michal.polkorab
  * @author timotej.kubas
  * @author madamjak
  */
-public class HelloMessageFactoryTest {
+public class HelloMessageFactoryTest extends DefaultDeserializerFactoryTest<HelloMessage> {
 
-    private OFDeserializer<HelloMessage> helloFactory;
+    /**
+     * Initializes deserializer registry and lookups OF13 deserializer.
+     */
+    public HelloMessageFactoryTest() {
+        super(new MessageCodeKey(EncodeConstants.OF13_VERSION_ID, 0, HelloMessage.class));
+    }
 
     /**
-     * Initializes deserializer registry and lookups correct deserializer
+     * Testing {@link HelloMessageFactory} for correct header version.
      */
-    @Before
-    public void startUp() {
-        DeserializerRegistry registry = new DeserializerRegistryImpl();
-        registry.init();
-        helloFactory = registry.getDeserializer(
-                new MessageCodeKey(EncodeConstants.OF13_VERSION_ID, 0, HelloMessage.class));
+    @Test
+    public void testVersion() {
+        List<Byte> versions = new ArrayList<>(Arrays.asList(
+                EncodeConstants.OF13_VERSION_ID,
+                EncodeConstants.OF14_VERSION_ID,
+                EncodeConstants.OF15_VERSION_ID
+        ));
+        ByteBuf bb = BufferHelper.buildBuffer("00 01 " // type
+                                            + "00 08 " // length
+                                            + "00 00 00 11" // bitmap 1
+        );
+        testHeaderVersions(versions, bb);
     }
 
     /**
-     * Testing {@link HelloMessageFactory} for correct length without padding
+     * Testing {@link HelloMessageFactory} for correct length without padding.
      */
     @Test
     public void testWithoutPadding() {
@@ -56,15 +64,14 @@ public class HelloMessageFactoryTest {
                                             + "00 08 " // length
                                             + "00 00 00 11" // bitmap 1
                                             );
-        HelloMessage builtByFactory = BufferHelper.deserialize(helloFactory, bb);
-        BufferHelper.checkHeaderV13(builtByFactory);
+        HelloMessage builtByFactory = BufferHelper.deserialize(factory, bb);
         List<Elements> element = createElement(4,HelloElementType.VERSIONBITMAP.getIntValue());
         Assert.assertEquals("Wrong type", element.get(0).getType(), builtByFactory.getElements().get(0).getType());
         Assert.assertEquals("Wrong versionBitmap", element.get(0).getVersionBitmap(), builtByFactory.getElements().get(0).getVersionBitmap());
     }
 
     /**
-     * Testing {@link HelloMessageFactory} for correct length with padding
+     * Testing {@link HelloMessageFactory} for correct length with padding.
      */
     @Test
     public void testWithPadding() {
@@ -74,15 +81,14 @@ public class HelloMessageFactoryTest {
                                             + "00 00 00 00 " // bitmap 2
                                             + "00 00 00 00"  // padding
                                             );
-        HelloMessage builtByFactory = BufferHelper.deserialize(helloFactory, bb);
-        BufferHelper.checkHeaderV13(builtByFactory);
+        HelloMessage builtByFactory = BufferHelper.deserialize(factory, bb);
         List<Elements> element = createElement(8,HelloElementType.VERSIONBITMAP.getIntValue());
         Assert.assertEquals("Wrong type", element.get(0).getType(), builtByFactory.getElements().get(0).getType());
         Assert.assertEquals("Wrong versionBitmap", element.get(0).getVersionBitmap(), builtByFactory.getElements().get(0).getVersionBitmap());
     }
 
     /**
-     * Testing {@link HelloMessageFactory} if incorrect version is set
+     * Testing {@link HelloMessageFactory} if incorrect version is set.
      */
     @Test
     public void testBadType(){
@@ -92,8 +98,7 @@ public class HelloMessageFactoryTest {
                                             + "00 00 00 00 " // bitmap 2
                                             + "00 00 00 00"  // padding
                                             );
-        HelloMessage builtByFactory = BufferHelper.deserialize(helloFactory, bb);
-        BufferHelper.checkHeaderV13(builtByFactory);
+        HelloMessage builtByFactory = BufferHelper.deserialize(factory, bb);
         Assert.assertEquals("Wrong - no element has been expected", 0, builtByFactory.getElements().size());
     }