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