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() {
+ "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() {
+ "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(){
+ "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());
}