Error code support for ErrorMessage
[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.GroupModCommand;\r
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.GroupType;\r
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortNumber;\r
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GroupModInput;\r
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GroupModInputBuilder;\r
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.buckets.BucketsList;\r
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.buckets.BucketsListBuilder;\r
22 \r
23 /**\r
24  * @author timotej.kubas\r
25  *\r
26  */\r
27 public class GroupModInputMessageFactoryTest {\r
28     private static final byte PADDING_IN_GROUP_MOD_MESSAGE = 1;\r
29     \r
30     /**\r
31      * @throws Exception\r
32      * Testing of {@link GroupModInputMessageFactory} for correct translation from POJO\r
33      */\r
34     @Test\r
35     public void testGroupModInputMessage() throws Exception {\r
36         GroupModInputBuilder builder = new GroupModInputBuilder();\r
37         BufferHelper.setupHeader(builder, EncodeConstants.OF13_VERSION_ID);\r
38         builder.setCommand(GroupModCommand.forValue(2));\r
39         builder.setType(GroupType.forValue(3));\r
40         builder.setGroupId(256L);\r
41         List<BucketsList> exp = createBucketsList();\r
42         builder.setBucketsList(exp);\r
43         GroupModInput message = builder.build();\r
44         \r
45         ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();\r
46         GroupModInputMessageFactory factory = GroupModInputMessageFactory.getInstance();\r
47         factory.messageToBuffer(HelloMessageFactoryTest.VERSION_YET_SUPPORTED, out, message);\r
48         \r
49         BufferHelper.checkHeaderV13(out, factory.getMessageType(), factory.computeLength(message));\r
50         Assert.assertEquals("Wrong command", message.getCommand().getIntValue(), out.readUnsignedShort());\r
51         Assert.assertEquals("Wrong type", message.getType().getIntValue(), out.readUnsignedByte());\r
52         out.skipBytes(PADDING_IN_GROUP_MOD_MESSAGE);\r
53         Assert.assertEquals("Wrong groupId", message.getGroupId().intValue(), out.readUnsignedInt());\r
54         List<BucketsList> rec = createBucketsListFromBufer(out);\r
55         Assert.assertArrayEquals("Wrong bucketList", exp.toArray(), rec.toArray());\r
56     }\r
57     \r
58     private static List<BucketsList> createBucketsList(){\r
59         List<BucketsList> bucketsList = new ArrayList<>();\r
60         BucketsListBuilder bucketsBuilder = new BucketsListBuilder();\r
61         BucketsList bucket;\r
62         bucketsBuilder.setWeight(10);\r
63         bucketsBuilder.setWatchPort(new PortNumber(65L));\r
64         bucketsBuilder.setWatchGroup(22L);\r
65         bucket = bucketsBuilder.build();\r
66         bucketsList.add(bucket);\r
67         return bucketsList;\r
68     }\r
69     \r
70     private static List<BucketsList> createBucketsListFromBufer(ByteBuf out){\r
71         List<BucketsList> bucketsList = new ArrayList<>();\r
72         BucketsListBuilder bucketsBuilder = new BucketsListBuilder();\r
73         BucketsList bucket;\r
74         out.skipBytes(Short.SIZE / Byte.SIZE);\r
75         bucketsBuilder.setWeight(out.readUnsignedShort());\r
76         bucketsBuilder.setWatchPort(new PortNumber(out.readUnsignedInt()));\r
77         bucketsBuilder.setWatchGroup(out.readUnsignedInt());\r
78         out.skipBytes(4);\r
79         bucket = bucketsBuilder.build();\r
80         bucketsList.add(bucket);\r
81         return bucketsList;\r
82     }\r
83 }\r