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;
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;
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));
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);
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);
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);
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);
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);
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);
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);
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);
* 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);
}
}