b26d4ffe6dafd6d64d4e8060c5f33d9aa8d58c4c
[openflowjava.git] / openflow-protocol-impl / src / test / java / org / opendaylight / openflowjava / protocol / impl / serialization / factories / multipart / OF10StatsRequestExperimenterTest.java
1 /*\r
2  * Copyright (c) 2014 Pantheon Technologies s.r.o. and others. All rights reserved.\r
3  *\r
4  * This program and the accompanying materials are made available under the\r
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
6  * and is available at http://www.eclipse.org/legal/epl-v10.html\r
7  */\r
8 \r
9 package org.opendaylight.openflowjava.protocol.impl.serialization.factories.multipart;\r
10 \r
11 import io.netty.buffer.ByteBuf;\r
12 import io.netty.buffer.UnpooledByteBufAllocator;\r
13 \r
14 import org.junit.Assert;\r
15 import org.junit.Test;\r
16 import org.junit.runner.RunWith;\r
17 import org.mockito.Matchers;\r
18 import org.mockito.Mock;\r
19 import org.mockito.Mockito;\r
20 import org.mockito.runners.MockitoJUnitRunner;\r
21 import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;\r
22 import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;\r
23 import org.opendaylight.openflowjava.protocol.api.keys.experimenter.ExperimenterIdSerializerKey;\r
24 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;\r
25 import org.opendaylight.openflowjava.protocol.impl.serialization.factories.OF10StatsRequestInputFactory;\r
26 import org.opendaylight.openflowjava.protocol.impl.util.BufferHelper;\r
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.ExperimenterIdMultipartRequest;\r
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.ExperimenterIdMultipartRequestBuilder;\r
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.ExperimenterId;\r
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartRequestFlags;\r
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartType;\r
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartRequestInput;\r
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartRequestInputBuilder;\r
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestExperimenterCase;\r
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestExperimenterCaseBuilder;\r
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.experimenter._case.MultipartRequestExperimenterBuilder;\r
37 \r
38 /**\r
39  * @author michal.polkorab\r
40  *\r
41  */\r
42 @RunWith(MockitoJUnitRunner.class)\r
43 public class OF10StatsRequestExperimenterTest {\r
44 \r
45     @Mock SerializerRegistry mockRegistry;\r
46     @Mock OFSerializer<MultipartRequestExperimenterCase> serializer;\r
47 \r
48     /**\r
49      * Testing OF10StatsRequestInputFactory (Experimenter) for correct serialization\r
50      * @throws Exception\r
51      */\r
52     @Test\r
53     public void testExperimenter() throws Exception {\r
54         Mockito.when(mockRegistry.getSerializer(Matchers.any(ExperimenterIdSerializerKey.class)))\r
55             .thenReturn(serializer);\r
56         OF10StatsRequestInputFactory multipartFactory = new OF10StatsRequestInputFactory();\r
57         multipartFactory.injectSerializerRegistry(mockRegistry);\r
58         MultipartRequestInputBuilder builder = new MultipartRequestInputBuilder();\r
59         BufferHelper.setupHeader(builder, EncodeConstants.OF10_VERSION_ID);\r
60         builder.setType(MultipartType.OFPMPEXPERIMENTER);\r
61         builder.setFlags(new MultipartRequestFlags(false));\r
62         MultipartRequestExperimenterCaseBuilder caseBuilder = new MultipartRequestExperimenterCaseBuilder();\r
63         MultipartRequestExperimenterBuilder expBuilder = new MultipartRequestExperimenterBuilder();\r
64         ExperimenterIdMultipartRequestBuilder expIdBuilder = new ExperimenterIdMultipartRequestBuilder();\r
65         expIdBuilder.setExperimenter(new ExperimenterId(42L));\r
66         expBuilder.addAugmentation(ExperimenterIdMultipartRequest.class, expIdBuilder.build());\r
67         caseBuilder.setMultipartRequestExperimenter(expBuilder.build());\r
68         builder.setMultipartRequestBody(caseBuilder.build());\r
69         MultipartRequestInput message = builder.build();\r
70 \r
71         ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();\r
72         multipartFactory.serialize(message, out);\r
73 \r
74         BufferHelper.checkHeaderV10(out, (byte) 16, 12);\r
75         Assert.assertEquals("Wrong type", 65535, out.readUnsignedShort());\r
76         Assert.assertEquals("Wrong flags", 0, out.readUnsignedShort());\r
77         Mockito.verify(serializer, Mockito.times(1)).serialize(Matchers.any(MultipartRequestExperimenterCase.class), Matchers.any(ByteBuf.class));\r
78     }\r
79 }