GroupId and MeterId used in model (as requested)
[openflowjava.git] / openflow-protocol-impl / src / test / java / org / opendaylight / openflowjava / protocol / impl / serialization / factories / GroupModInputMessageFactoryTest.java
1 /* Copyright (C)2013 Pantheon Technologies, s.r.o. All rights reserved. */\r
2 package org.opendaylight.openflowjava.protocol.impl.serialization.factories;\r
3 \r
4 import io.netty.buffer.ByteBuf;\r
5 import io.netty.buffer.UnpooledByteBufAllocator;\r
6 \r
7 import java.util.ArrayList;\r
8 import java.util.List;\r
9 \r
10 import org.junit.Assert;\r
11 import org.junit.Test;\r
12 import org.opendaylight.openflowjava.protocol.impl.deserialization.factories.HelloMessageFactoryTest;\r
13 import org.opendaylight.openflowjava.protocol.impl.util.BufferHelper;\r
14 import org.opendaylight.openflowjava.protocol.impl.util.EncodeConstants;\r
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.GroupId;\r
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.GroupModCommand;\r
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.GroupType;\r
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortNumber;\r
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GroupModInput;\r
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GroupModInputBuilder;\r
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.buckets.BucketsList;\r
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.buckets.BucketsListBuilder;\r
23 \r
24 /**\r
25  * @author timotej.kubas\r
26  *\r
27  */\r
28 public class GroupModInputMessageFactoryTest {\r
29     private static final byte PADDING_IN_GROUP_MOD_MESSAGE = 1;\r
30     \r
31     /**\r
32      * @throws Exception\r
33      * Testing of {@link GroupModInputMessageFactory} for correct translation from POJO\r
34      */\r
35     @Test\r
36     public void testGroupModInputMessage() throws Exception {\r
37         GroupModInputBuilder builder = new GroupModInputBuilder();\r
38         BufferHelper.setupHeader(builder, EncodeConstants.OF13_VERSION_ID);\r
39         builder.setCommand(GroupModCommand.forValue(2));\r
40         builder.setType(GroupType.forValue(3));\r
41         builder.setGroupId(new GroupId(256L));\r
42         List<BucketsList> exp = createBucketsList();\r
43         builder.setBucketsList(exp);\r
44         GroupModInput message = builder.build();\r
45         \r
46         ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();\r
47         GroupModInputMessageFactory factory = GroupModInputMessageFactory.getInstance();\r
48         factory.messageToBuffer(HelloMessageFactoryTest.VERSION_YET_SUPPORTED, out, message);\r
49         \r
50         BufferHelper.checkHeaderV13(out, factory.getMessageType(), factory.computeLength(message));\r
51         Assert.assertEquals("Wrong command", message.getCommand().getIntValue(), out.readUnsignedShort());\r
52         Assert.assertEquals("Wrong type", message.getType().getIntValue(), out.readUnsignedByte());\r
53         out.skipBytes(PADDING_IN_GROUP_MOD_MESSAGE);\r
54         Assert.assertEquals("Wrong groupId", message.getGroupId().getValue().intValue(), out.readUnsignedInt());\r
55         List<BucketsList> rec = createBucketsListFromBufer(out);\r
56         Assert.assertArrayEquals("Wrong bucketList", exp.toArray(), rec.toArray());\r
57     }\r
58     \r
59     private static List<BucketsList> createBucketsList(){\r
60         List<BucketsList> bucketsList = new ArrayList<>();\r
61         BucketsListBuilder bucketsBuilder = new BucketsListBuilder();\r
62         BucketsList bucket;\r
63         bucketsBuilder.setWeight(10);\r
64         bucketsBuilder.setWatchPort(new PortNumber(65L));\r
65         bucketsBuilder.setWatchGroup(22L);\r
66         bucket = bucketsBuilder.build();\r
67         bucketsList.add(bucket);\r
68         return bucketsList;\r
69     }\r
70     \r
71     private static List<BucketsList> createBucketsListFromBufer(ByteBuf out){\r
72         List<BucketsList> bucketsList = new ArrayList<>();\r
73         BucketsListBuilder bucketsBuilder = new BucketsListBuilder();\r
74         BucketsList bucket;\r
75         out.skipBytes(EncodeConstants.SIZE_OF_SHORT_IN_BYTES);\r
76         bucketsBuilder.setWeight(out.readUnsignedShort());\r
77         bucketsBuilder.setWatchPort(new PortNumber(out.readUnsignedInt()));\r
78         bucketsBuilder.setWatchGroup(out.readUnsignedInt());\r
79         out.skipBytes(4);\r
80         bucket = bucketsBuilder.build();\r
81         bucketsList.add(bucket);\r
82         return bucketsList;\r
83     }\r
84 }\r